lagadic / visp

Open Source Visual Servoing Platform
https://visp.inria.fr/
GNU General Public License v2.0
724 stars 287 forks source link

Segfault with vpCannyEdgeDetection with a certain image #1487

Open s-trinh opened 2 weeks ago

s-trinh commented 2 weeks ago

Hello,

With the following image, I encounter a segfault with ViSP v3.6.0-1651-ga65eebc2f-dirty. img

Code to reproduce the issue:

#include <iostream>
#include <visp3/core/vpConfig.h>
#include <visp3/core/vpIoTools.h>
#include <visp3/core/vpCannyEdgeDetection.h>
#include <visp3/io/vpImageIo.h>

int main(int argc, const char **argv)
{
  std::cout << "getBuildInformation()\n" << vpIoTools::getBuildInformation() << std::endl;

  int gaussianKernelSize = 3;
  float gaussianStdev = 0.5f;
  int apertureSize = 3;
  // Canny parameters
  float lowerThresh = -1.;
  float upperThresh = -1.;
  float lowerThreshRatio = 0.6f;
  float upperThreshRatio = 1.5f;
  vpImageFilter::vpCannyFilteringAndGradientType filteringType = vpImageFilter::CANNY_GBLUR_SOBEL_FILTERING;

  vpCannyEdgeDetection cannyDetector(gaussianKernelSize, gaussianStdev, apertureSize,
                                    lowerThresh, upperThresh, lowerThreshRatio, upperThreshRatio,
                                    filteringType);

  vpImage<unsigned char> I_gray;
  vpImageIo::read(I_gray, "/tmp/img.png");
  std::cout << "I_gray=" << I_gray.getWidth() << "x" << I_gray.getHeight() << std::endl;

  vpImage<unsigned char> I_canny_visp;
  I_canny_visp = cannyDetector.detect(I_gray);

  return EXIT_SUCCESS;
}

gdb stack trace:

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff77fe8c1 in __dcigettext (domainname=0x0, msgid1=0x7ffff7ecec00 "map::at", msgid2=0x0, plural=0, n=0, category=5) at dcigettext.c:521
521 dcigettext.c: Aucun fichier ou dossier de ce type.
(gdb) bt
#0  0x00007ffff77fe8c1 in __dcigettext (domainname=0x0, msgid1=0x7ffff7ecec00 "map::at", msgid2=0x0, plural=0, n=0, category=5) at dcigettext.c:521
#1  0x00007ffff7a7731b in std::__throw_out_of_range(char const*) () at /lib/x86_64-linux-gnu/libstdc++.so.6
#2  0x00007ffff7ca5688 in std::map<std::pair<unsigned int, unsigned int>, vpCannyEdgeDetection::EdgeType, std::less<std::pair<unsigned int, unsigned int> >, std::allocator<std::pair<std::pair<unsigned int, unsigned int> const, vpCannyEdgeDetection::EdgeType> > >::at(std::pair<unsigned int, unsigned int> const&) (__k={...}, this=0x7fffffffdca8) at /usr/include/c++/9/bits/stl_pair.h:454
#3  vpCannyEdgeDetection::recursiveSearchForStrongEdge(std::pair<unsigned int, unsigned int> const&) (this=0x7fffffffdb60, coordinates={...})
    at visp/modules/core/src/image/vpCannyEdgeDetection.cpp:547
#4  0x00007ffff7ca57a6 in vpCannyEdgeDetection::recursiveSearchForStrongEdge(std::pair<unsigned int, unsigned int> const&) (this=0x7fffffffdb60, coordinates={...})
    at visp/modules/core/src/image/vpCannyEdgeDetection.cpp:554
#5  0x00007ffff7ca57a6 in vpCannyEdgeDetection::recursiveSearchForStrongEdge(std::pair<unsigned int, unsigned int> const&) (this=0x7fffffffdb60, coordinates={...})
    at visp/modules/core/src/image/vpCannyEdgeDetection.cpp:554
#6  0x00007ffff7ca57a6 in vpCannyEdgeDetection::recursiveSearchForStrongEdge(std::pair<unsigned int, unsigned int> const&) (this=0x7fffffffdb60, coordinates={...})
    at visp/modules/core/src/image/vpCannyEdgeDetection.cpp:554
#7  0x00007ffff7ca57a6 in vpCannyEdgeDetection::recursiveSearchForStrongEdge(std::pair<unsigned int, unsigned int> const&) (this=0x7fffffffdb60, coordinates={...})
    at visp/modules/core/src/image/vpCannyEdgeDetection.cpp:554
#8  0x00007ffff7ca57a6 in vpCannyEdgeDetection::recursiveSearchForStrongEdge(std::pair<unsigned int, unsigned int> const&) (this=0x7fffffffdb60, coordinates={...})
    at visp/modules/core/src/image/vpCannyEdgeDetection.cpp:554
#9  0x00007ffff7ca57a6 in vpCannyEdgeDetection::recursiveSearchForStrongEdge(std::pair<unsigned int, unsigned int> const&) (this=0x7fffffffdb60, coordinates={...})
    at visp/modules/core/src/image/vpCannyEdgeDetection.cpp:554
#10 0x00007ffff7ca57a6 in vpCannyEdgeDetection::recursiveSearchForStrongEdge(std::pair<unsigned int, unsigned int> const&) (this=0x7fffffffdb60, coordinates={...})
    at visp/modules/core/src/image/vpCannyEdgeDetection.cpp:554
#11 0x00007ffff7ca57a6 in vpCannyEdgeDetection::recursiveSearchForStrongEdge(std::pair<unsigned int, unsigned int> const&) (this=0x7fffffffdb60, coordinates={...})
    at visp/modules/core/src/image/vpCannyEdgeDetection.cpp:554
#12 0x00007ffff7ca57a6 in vpCannyEdgeDetection::recursiveSearchForStrongEdge(std::pair<unsigned int, unsigned int> const&) (this=0x7fffffffdb60, coordinates={...})
    at visp/modules/core/src/image/vpCannyEdgeDetection.cpp:554
#13 0x00007ffff7ca57a6 in vpCannyEdgeDetection::recursiveSearchForStrongEdge(std::pair<unsigned int, unsigned int> const&) (this=0x7fffffffdb60, coordinates={...})

Looks like using the following guard does not help:

diff --git a/modules/core/src/image/vpCannyEdgeDetection.cpp b/modules/core/src/image/vpCannyEdgeDetection.cpp
index 310814709..ac727c9ce 100644
--- a/modules/core/src/image/vpCannyEdgeDetection.cpp
+++ b/modules/core/src/image/vpCannyEdgeDetection.cpp
@@ -544,14 +544,16 @@ vpCannyEdgeDetection::recursiveSearchForStrongEdge(const std::pair<unsigned int,
         try {
           std::pair<unsigned int, unsigned int> key_candidate(idRow, idCol);
           // Checking if the 8-neighbor point is in the list of edge candidates
-          EdgeType type_candidate = m_edgePointsCandidates.at(key_candidate);
-          if (type_candidate == STRONG_EDGE) {
-            // The 8-neighbor point is a strong edge => the weak edge becomes a strong edge
-            hasFoundStrongEdge = true;
-          }
-          else if (type_candidate == WEAK_EDGE) {
-            // Checking if the WEAK_EDGE neighbor has a STRONG_EDGE neighbor
-            hasFoundStrongEdge = recursiveSearchForStrongEdge(key_candidate);
+          if (m_edgePointsCandidates.find(key_candidate) != m_edgePointsCandidates.end()) {
+            EdgeType type_candidate = m_edgePointsCandidates.at(key_candidate);
+            if (type_candidate == STRONG_EDGE) {
+              // The 8-neighbor point is a strong edge => the weak edge becomes a strong edge
+              hasFoundStrongEdge = true;
+            }
+            else if (type_candidate == WEAK_EDGE) {
+              // Checking if the WEAK_EDGE neighbor has a STRONG_EDGE neighbor
+              hasFoundStrongEdge = recursiveSearchForStrongEdge(key_candidate);
+            }
           }
         }
         catch (...) {
rolalaro commented 1 week ago

Hello, That's weird I cannot reproduce your error using the same parameters. Could you please run the following:

$ cd $VISP_WS/visp-build/tutorial/image
$ ./tutorial-canny -i /tmp/img.png --ratio 0.6 1.5 --gradient 3 0.5 --aperture 3

On my computer (Ubuntu 22.04) the program works correctly (even if the Canny results are a bit odd due to the exposure of the image)

s-trinh commented 1 week ago

Yes I have the same issue with ./tutorial-canny -i /tmp/img.png --ratio 0.6 1.5 --gradient 3 0.5 --aperture 3

ViSP-third-party.txt ```bash ========================================================== General configuration information for ViSP 3.6.1 Version control: v3.6.0-1651-ga65eebc2f Platform: Timestamp: 2023-11-15T22:24:52Z Host: Linux 5.15.0-84-generic x86_64 CMake: 3.16.3 CMake generator: Unix Makefiles CMake build tool: /usr/bin/make Configuration: RelWithDebInfo System information: Number of CPU logical cores: 16 Number of CPU physical cores: 8 Total physical memory (in MiB): 15689 OS name: Linux OS release: 5.15.0-124-generic OS version: #134~20.04.1-Ubuntu SMP Tue Oct 1 15:27:33 UTC 2024 OS platform: x86_64 CPU name: Unknown P6 family Is the CPU 64-bit? yes Does the CPU have FPU? yes CPU optimization: SSE2 SSE3 SSSE3 C/C++: Built as dynamic libs?: yes C++ Compiler: /usr/bin/c++ (ver 9.4.0) C++ flags (Release): -Wall -Wextra -fopenmp -pthread -std=c++17 -fvisibility=hidden -mavx -fPIC -O3 -DNDEBUG C++ flags (Debug): -Wall -Wextra -fopenmp -pthread -std=c++17 -fvisibility=hidden -mavx -fPIC -g C Compiler: /usr/bin/cc C flags (Release): -Wall -Wextra -fopenmp -pthread -std=c++17 -fvisibility=hidden -mavx -fPIC -O3 -DNDEBUG C flags (Debug): -Wall -Wextra -fopenmp -pthread -std=c++17 -fvisibility=hidden -mavx -fPIC -g Linker flags (Release): Linker flags (Debug): Use cxx standard: 17 ViSP modules: To be built: core gui imgproc io java_bindings_generator klt me sensor ar blob robot visual_features vs vision detection mbt tt tt_mi Disabled: - Disabled by dependency: - Unavailable: java Enable visp namespace: no Enable explicit keyword: no Python 3: Interpreter: /usr/bin/python3.8 (ver 3.8.10) Java: ant: no JNI: no Python3 bindings: no Requirements: Python version > 3.7.0: ok (ver 3.8.10) Python in Virtual environment or conda: failed Pybind11 found: failed CMake > 3.19.0: failed (3.16.3) C++ standard > 201703L: ok (201703L) Build options: Build deprecated: yes Build with moment combine: no OpenCV: Version: 4.10.0 Modules: calib3d core dnn features2d flann gapi highgui imgcodecs imgproc ml objdetect photo stitching video videoio dnn_objdetect dnn_superres xfeatures2d OpenCV dir: <>/opencv_build/install/lib/cmake/opencv4 YARP: Version: n/a Mathematics: Blas/Lapack: yes \- Use MKL: no \- Use OpenBLAS: no \- Use Atlas: no \- Use Netlib: no \- Use GSL: no \- Use Lapack (built-in): yes (ver 3.2.1) Use Eigen3: yes (ver 3.3.7) Use OpenCV: yes (ver 4.10.0) Simulator: Ogre simulator: \- Use Ogre3D: no \- Use OIS: no Coin simulator: \- Use Coin3D: no \- Use SoWin: no \- Use SoXt: no \- Use SoQt: no \- Use Qt5: no \- Use Qt4: no \- Use Qt3: no Panda3D: no Media I/O: Use JPEG: no Use PNG: yes (ver 1.6.37) \- Use ZLIB: yes (ver 1.2.11) Use OpenCV: yes (ver 4.10.0) Use stb_image (built-in): yes (ver 2.30.0) Use TinyEXR (built-in): yes (ver 1.0.9) Use simdlib (built-in): yes Use npz I/O (built-in): yes Real robots: Use Afma4: no Use Afma6: no Use Franka: no Use Viper650: no Use Viper850: no Use ur_rtde: no Use Kinova Jaco: no Use aria (Pioneer): no Use PTU46: no Use Biclops PTU: no Use Flir PTU SDK: no Use MAVSDK: no Use Parrot ARSDK: no \-Use ffmpeg: no Use Virtuose: no Use qbdevice (built-in): yes (ver 2.6.0) Use takktile2 (built-in): yes (ver 1.0.0) Use pololu (built-in): yes (ver 1.0.0) GUI: Use X11: yes Use GTK: no Use OpenCV: yes (ver 4.10.0) Use GDI: no Use Direct3D: no Cameras: Use DC1394-2.x: no Use CMU 1394: no Use V4L2: yes (ver 1.18.0) Use directshow: no Use OpenCV: yes (ver 4.10.0) Use FLIR Flycapture: no Use Basler Pylon: no Use IDS uEye: no RGB-D sensors: Use Realsense: no Use Realsense2: yes (ver 2.54.2) Use Occipital Structure: no Use Kinect: no \- Use libfreenect: no \- Use libusb-1: yes (ver 1.0.23) \- Use std::thread: yes Use PCL: no \- Use VTK: no F/T sensors: Use atidaq (built-in): no Use comedi: no Use IIT SDK: no Mocap: Use Qualisys: no Use Vicon: no Detection: Use zbar: no Use dmtx: no Use AprilTag (built-in): yes (ver 3.4.2) \- Use AprilTag big family: no Misc: Use Clipper (built-in): yes (ver 6.4.2) Use pugixml (built-in): yes (ver 1.14.0) Use libxml2: no Use json (nlohmann): no Optimization: Use OpenMP: yes Use std::thread: yes Use pthread: yes Use simdlib (built-in): yes DNN: Use CUDA Toolkit: no Use TensorRT: no Documentation: Use doxygen: yes \- Use mathjax: yes Tests and samples: Use catch2 (built-in): yes (ver 3.7.1) Tests: yes Apps: yes Demos: no Examples: yes Tutorials: yes Dataset found: yes (ver 3.6.0 in <>/visp-images) Library dirs: Eigen3 include dir: /usr/lib/cmake/eigen3 OpenCV dir: <>/opencv_build/install/lib/cmake/opencv4 Install path: <>/visp-build/install ========================================================== ```

Increasing the stack size did not help:

ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 62389
max locked memory       (kbytes, -l) 65536
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 62389
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

ulimit -s 16384

ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 62389
max locked memory       (kbytes, -l) 65536
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 16384
cpu time               (seconds, -t) unlimited
max user processes              (-u) 62389
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

gdb ```bash gdb ./tutorial-canny GNU gdb (Ubuntu 9.2-0ubuntu1~20.04.2) 9.2 Copyright (C) 2020 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-linux-gnu". Type "show configuration" for configuration details. For bug reporting instructions, please see: . Find the GDB manual and other documentation resources online at: . For help, type "help". Type "apropos word" to search for commands related to "word"... Reading symbols from ./tutorial-canny... (gdb) r -i /tmp/img.png --ratio 0.6 1.5 --gradient 3 0.5 --aperture 3 Starting program: <>/visp-build/tutorial/image/tutorial-canny -i /tmp/img.png --ratio 0.6 1.5 --gradient 3 0.5 --aperture 3 [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". [Detaching after vfork from child process 47208] [Detaching after vfork from child process 47213] Canny Configuration: Filtering + gradient operators = gaussianblur+sobel-filtering Gaussian filter kernel size = 3 Gaussian filter standard deviation = 0.500000 Gradient filter kernel size = 3 Canny edge filter thresholds = [-1.000000 ; -1.000000] Canny edge filter thresholds ratio (for auto-thresholding) = [0.600000 ; 1.500000] Program received signal SIGSEGV, Segmentation fault. 0x00007ffff7c6d525 in vpCannyEdgeDetection::recursiveSearchForStrongEdge (this=0x7fffffffd9a0, coordinates={...}) at <>/visp/modules/core/src/image/vpCannyEdgeDetection.cpp:515 515 int nbRows = m_dIx.getRows(); (gdb) bt #0 0x00007ffff7c6d525 in vpCannyEdgeDetection::recursiveSearchForStrongEdge(std::pair const&) (this=0x7fffffffd9a0, coordinates={...}) at <>/visp/modules/core/src/image/vpCannyEdgeDetection.cpp:515 #1 0x00007ffff7c6d7a6 in vpCannyEdgeDetection::recursiveSearchForStrongEdge(std::pair const&) (this=0x7fffffffd9a0, coordinates={...}) at <>/visp/modules/core/src/image/vpCannyEdgeDetection.cpp:554 #2 0x00007ffff7c6d7a6 in vpCannyEdgeDetection::recursiveSearchForStrongEdge(std::pair const&) (this=0x7fffffffd9a0, coordinates={...}) at <>/visp/modules/core/src/image/vpCannyEdgeDetection.cpp:554 ```

Valgrind (`Stack overflow in thread #1: can't grow stack to 0x1ffe801000`) ```bash ==48425== Memcheck, a memory error detector ==48425== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al. ==48425== Using Valgrind-3.15.0-608cb11914-20190413 and LibVEX; rerun with -h for copyright info ==48425== Command: ./tutorial-canny -i /tmp/img.png --ratio 0.6 1.5 --gradient 3 0.5 --aperture 3 ==48425== Parent PID: 47465 ==48425== --48425-- --48425-- Valgrind options: --48425-- --leak-check=full --48425-- --track-origins=yes --48425-- --verbose --48425-- --log-file=valgrind-out_2.txt --48425-- Contents of /proc/version: --48425-- Linux version 5.15.0-124-generic (buildd@lcy02-amd64-092) (gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0, GNU ld (GNU Binutils for Ubuntu) 2.34) #134~20.04.1-Ubuntu SMP Tue Oct 1 15:27:33 UTC 2024 --48425-- --48425-- Arch and hwcaps: AMD64, LittleEndian, amd64-cx16-lzcnt-rdtscp-sse3-ssse3-avx-avx2-bmi-f16c-rdrand --48425-- Page sizes: currently 4096, max supported 4096 --48425-- Valgrind library directory: /usr/lib/x86_64-linux-gnu/valgrind --48425-- Reading syms from <>/visp-build/tutorial/image/tutorial-canny --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/ld-2.31.so --48425-- Considering /usr/lib/debug/.build-id/db/0420f708b806cf03260aadb916c330049580b7.debug .. --48425-- .. build-id is valid --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/valgrind/memcheck-amd64-linux --48425-- object doesn't have a symbol table --48425-- object doesn't have a dynamic symbol table --48425-- Scheduler: using generic scheduler lock implementation. --48425-- Reading suppressions file: /usr/lib/x86_64-linux-gnu/valgrind/default.supp ==48425== embedded gdbserver: reading from /tmp/vgdb-pipe-from-vgdb-to-48425-by-user-on-??? ==48425== embedded gdbserver: writing to /tmp/vgdb-pipe-to-vgdb-from-48425-by-user-on-??? ==48425== embedded gdbserver: shared mem /tmp/vgdb-pipe-shared-mem-vgdb-48425-by-user-on-??? ==48425== ==48425== TO CONTROL THIS PROCESS USING vgdb (which you probably ==48425== don't want to do, unless you know exactly what you're doing, ==48425== or are doing some strange experiment): ==48425== /usr/lib/x86_64-linux-gnu/valgrind/../../bin/vgdb --pid=48425 ...command... ==48425== ==48425== TO DEBUG THIS PROCESS USING GDB: start GDB like this ==48425== /path/to/gdb ./tutorial-canny ==48425== and then give GDB the following command ==48425== target remote | /usr/lib/x86_64-linux-gnu/valgrind/../../bin/vgdb --pid=48425 ==48425== --pid is optional if only one valgrind process is running ==48425== --48425-- REDIR: 0x4022e20 (ld-linux-x86-64.so.2:strlen) redirected to 0x580c9ce2 (???) --48425-- REDIR: 0x4022bf0 (ld-linux-x86-64.so.2:index) redirected to 0x580c9cfc (???) --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_core-amd64-linux.so --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so --48425-- object doesn't have a symbol table ==48425== WARNING: new redirection conflicts with existing -- ignoring it --48425-- old: 0x04022e20 (strlen ) R-> (0000.0) 0x580c9ce2 ??? --48425-- new: 0x04022e20 (strlen ) R-> (2007.0) 0x0483f060 strlen --48425-- REDIR: 0x401f600 (ld-linux-x86-64.so.2:strcmp) redirected to 0x483ffd0 (strcmp) --48425-- REDIR: 0x4023380 (ld-linux-x86-64.so.2:mempcpy) redirected to 0x4843a20 (mempcpy) --48425-- Reading syms from <>/visp-build/lib/libvisp_gui.so.3.6.1 --48425-- Reading syms from <>/visp-build/lib/libvisp_io.so.3.6.1 --48425-- Reading syms from <>/visp-build/lib/libvisp_core.so.3.6.1 --48425-- Reading syms from <>/opencv_build/install/lib/libopencv_core.so.4.10.0 --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.28 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libm-2.31.so --48425-- Considering /usr/lib/debug/.build-id/8d/2573eff281739f0e2b0eb710c860ce0b7261cf.debug .. --48425-- .. build-id is valid --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libgcc_s.so.1 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libc-2.31.so --48425-- Considering /usr/lib/debug/.build-id/07/02430aef5fa3dda43986563e9ffcc47efbd75e.debug .. --48425-- .. build-id is valid --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0 --48425-- object doesn't have a symbol table --48425-- Reading syms from <>/opencv_build/install/lib/libopencv_imgproc.so.4.10.0 --48425-- Reading syms from <>/opencv_build/install/lib/libopencv_highgui.so.4.10.0 --48425-- Reading syms from <>/opencv_build/install/lib/libopencv_videoio.so.4.10.0 --48425-- Reading syms from <>/opencv_build/install/lib/libopencv_imgcodecs.so.4.10.0 --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libpng16.so.16.37.0 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libpthread-2.31.so --48425-- Considering /usr/lib/debug/.build-id/9a/65bb469e45a1c6fbcffae5b82a2fd7a69eb479.debug .. --48425-- .. build-id is valid --48425-- Reading syms from <>/opencv_build/install/lib/libopencv_calib3d.so.4.10.0 --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libdl-2.31.so --48425-- Considering /usr/lib/debug/.build-id/25/372f43dbcc661aa02020d0365c948e89f6e612.debug .. --48425-- .. build-id is valid --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libz.so.1.2.11 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libgtk-3.so.0.2404.16 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libgdk-3.so.0.2404.16 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libcairo.so.2.11600.0 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0.4000.0 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.6400.6 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libavcodec.so.58.54.100 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libavformat.so.58.29.100 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libavutil.so.56.31.100 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libswscale.so.5.5.100 --48425-- object doesn't have a symbol table --48425-- Reading syms from <>/opencv_build/install/lib/libopencv_features2d.so.4.10.0 --48425-- Reading syms from <>/opencv_build/install/lib/libopencv_flann.so.4.10.0 --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libXau.so.6.0.0 --48425-- Considering /usr/lib/x86_64-linux-gnu/libXau.so.6.0.0 .. --48425-- .. CRC mismatch (computed 7de9b6ad wanted e8a17129) --48425-- Considering /lib/x86_64-linux-gnu/libXau.so.6.0.0 .. --48425-- .. CRC mismatch (computed 7de9b6ad wanted e8a17129) --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libXdmcp.so.6.0.0 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libgmodule-2.0.so.0.6400.6 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so.0.4400.7 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libXi.so.6.1.0 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libXfixes.so.3.1.0 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libcairo-gobject.so.2.11600.0 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libatk-1.0.so.0.23510.1 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libatk-bridge-2.0.so.0.0.0 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libepoxy.so.0.0.0 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libfribidi.so.0.4.0 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.6400.6 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libpangoft2-1.0.so.0.4400.7 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libpango-1.0.so.0.4400.7 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libharfbuzz.so.0.20600.4 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.12.0 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libfreetype.so.6.17.1 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libXinerama.so.1.0.0 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libXrandr.so.2.2.0 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libXcursor.so.1.0.2 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libXcomposite.so.1.0.0 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libXdamage.so.1.1.0 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libxkbcommon.so.0.0.0 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libwayland-cursor.so.0.0.0 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libwayland-egl.so.1.0.0 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libwayland-client.so.0.3.0 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libXext.so.6.4.0 --48425-- Considering /usr/lib/x86_64-linux-gnu/libXext.so.6.4.0 .. --48425-- .. CRC mismatch (computed 7e27e1ef wanted 4ab025b2) --48425-- Considering /lib/x86_64-linux-gnu/libXext.so.6.4.0 .. --48425-- .. CRC mismatch (computed 7e27e1ef wanted 4ab025b2) --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/librt-2.31.so --48425-- Considering /usr/lib/debug/.build-id/fc/7c873442781f08af6bc88f1acac7ecccec7285.debug .. --48425-- .. build-id is valid --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libpixman-1.so.0.38.4 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libxcb-shm.so.0.0.0 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libxcb-render.so.0.0.0 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libXrender.so.1.3.0 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libffi.so.7.1.0 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libpcre.so.3.13.3 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libswresample.so.3.5.100 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libvpx.so.6.2.0 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libwebpmux.so.3.0.1 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libwebp.so.6.0.2 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/liblzma.so.5.2.4 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/librsvg-2.so.2.47.0 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libzvbi.so.0.13.2 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libsnappy.so.1.1.8 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libaom.so.0 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libcodec2.so.0.9 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libgsm.so.1.0.18 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libmp3lame.so.0.0.0 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libopenjp2.so.2.3.1 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libopus.so.0.8.0 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libshine.so.3.0.1 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libspeex.so.1.5.0 --48425-- Considering /usr/lib/x86_64-linux-gnu/libspeex.so.1.5.0 .. --48425-- .. CRC mismatch (computed cdeef767 wanted e46c0181) --48425-- Considering /lib/x86_64-linux-gnu/libspeex.so.1.5.0 .. --48425-- .. CRC mismatch (computed cdeef767 wanted e46c0181) --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libtheoraenc.so.1.1.2 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libtheoradec.so.1.1.4 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libtwolame.so.0.0.0 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libvorbis.so.0.4.8 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libvorbisenc.so.2.0.11 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libwavpack.so.1.2.1 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libx264.so.155 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libx265.so.179 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libxvidcore.so.4.3 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libva.so.2.700.0 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libxml2.so.2.9.10 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libbz2.so.1.0.4 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libgme.so.0.6.2 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libopenmpt.so.0.1.1 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libchromaprint.so.1.4.3 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libbluray.so.2.2.0 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libgnutls.so.30.27.0 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libssh-gcrypt.so.4.8.4 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libva-drm.so.2.700.0 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libva-x11.so.2.700.0 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libvdpau.so.1.0.0 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libdrm.so.2.4.0 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libOpenCL.so.1.0.0 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libbsd.so.0.10.0 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libdbus-1.so.3.19.11 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libatspi.so.0.0.1 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libmount.so.1.1.0 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libselinux.so.1 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libresolv-2.31.so --48425-- Considering /usr/lib/debug/.build-id/08/f526f3424a323f041d27d040659e7fd07a8be5.debug .. --48425-- .. build-id is valid --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libthai.so.0.3.1 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libgraphite2.so.3.2.1 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libexpat.so.1.6.11 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libuuid.so.1.3.0 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libsoxr.so.0.1.2 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libogg.so.0.8.4 --48425-- Considering /usr/lib/x86_64-linux-gnu/libogg.so.0.8.4 .. --48425-- .. CRC mismatch (computed 9cb68f90 wanted f1b31916) --48425-- Considering /lib/x86_64-linux-gnu/libogg.so.0.8.4 .. --48425-- .. CRC mismatch (computed 9cb68f90 wanted f1b31916) --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libnuma.so.1.0.0 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libicuuc.so.66.1 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libmpg123.so.0.44.10 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libvorbisfile.so.3.3.7 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libp11-kit.so.0.3.0 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libidn2.so.0.3.6 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libunistring.so.2.1.0 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libtasn1.so.6.6.0 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libnettle.so.7.0 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libhogweed.so.5.0 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libgmp.so.10.4.0 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libgcrypt.so.20.2.5 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libgpg-error.so.0.28.0 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libgssapi_krb5.so.2.2 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libsystemd.so.0.28.0 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libblkid.so.1.1.0 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libpcre2-8.so.0.9.0 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libdatrie.so.1.3.5 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libicudata.so.66.1 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libkrb5.so.3.3 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libk5crypto.so.3.1 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libcom_err.so.2.1 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libkrb5support.so.0.1 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/liblz4.so.1.9.2 --48425-- object doesn't have a symbol table --48425-- Reading syms from /usr/lib/x86_64-linux-gnu/libkeyutils.so.1.8 --48425-- object doesn't have a symbol table --48425-- REDIR: 0x5e40480 (libc.so.6:memmove) redirected to 0x48331d0 (_vgnU_ifunc_wrapper) --48425-- REDIR: 0x5e3f780 (libc.so.6:strncpy) redirected to 0x48331d0 (_vgnU_ifunc_wrapper) --48425-- REDIR: 0x5e407b0 (libc.so.6:strcasecmp) redirected to 0x48331d0 (_vgnU_ifunc_wrapper) --48425-- REDIR: 0x5e3f0a0 (libc.so.6:strcat) redirected to 0x48331d0 (_vgnU_ifunc_wrapper) --48425-- REDIR: 0x5e3f7e0 (libc.so.6:rindex) redirected to 0x48331d0 (_vgnU_ifunc_wrapper) --48425-- REDIR: 0x5e41c50 (libc.so.6:rawmemchr) redirected to 0x48331d0 (_vgnU_ifunc_wrapper) --48425-- REDIR: 0x5e5cce0 (libc.so.6:wmemchr) redirected to 0x48331d0 (_vgnU_ifunc_wrapper) --48425-- REDIR: 0x5e5c820 (libc.so.6:wcscmp) redirected to 0x48331d0 (_vgnU_ifunc_wrapper) --48425-- REDIR: 0x5e405e0 (libc.so.6:mempcpy) redirected to 0x48331d0 (_vgnU_ifunc_wrapper) --48425-- REDIR: 0x5e40410 (libc.so.6:bcmp) redirected to 0x48331d0 (_vgnU_ifunc_wrapper) --48425-- REDIR: 0x5e3f710 (libc.so.6:strncmp) redirected to 0x48331d0 (_vgnU_ifunc_wrapper) --48425-- REDIR: 0x5e3f150 (libc.so.6:strcmp) redirected to 0x48331d0 (_vgnU_ifunc_wrapper) --48425-- REDIR: 0x5e40540 (libc.so.6:memset) redirected to 0x48331d0 (_vgnU_ifunc_wrapper) --48425-- REDIR: 0x5e5c7e0 (libc.so.6:wcschr) redirected to 0x48331d0 (_vgnU_ifunc_wrapper) --48425-- REDIR: 0x5e3f670 (libc.so.6:strnlen) redirected to 0x48331d0 (_vgnU_ifunc_wrapper) --48425-- REDIR: 0x5e3f230 (libc.so.6:strcspn) redirected to 0x48331d0 (_vgnU_ifunc_wrapper) --48425-- REDIR: 0x5e40800 (libc.so.6:strncasecmp) redirected to 0x48331d0 (_vgnU_ifunc_wrapper) --48425-- REDIR: 0x5e3f1d0 (libc.so.6:strcpy) redirected to 0x48331d0 (_vgnU_ifunc_wrapper) --48425-- REDIR: 0x5e40950 (libc.so.6:memcpy@@GLIBC_2.14) redirected to 0x48331d0 (_vgnU_ifunc_wrapper) --48425-- REDIR: 0x5e5df50 (libc.so.6:wcsnlen) redirected to 0x48331d0 (_vgnU_ifunc_wrapper) --48425-- REDIR: 0x5e5c860 (libc.so.6:wcscpy) redirected to 0x48331d0 (_vgnU_ifunc_wrapper) --48425-- REDIR: 0x5e3f820 (libc.so.6:strpbrk) redirected to 0x48331d0 (_vgnU_ifunc_wrapper) --48425-- REDIR: 0x5e3f100 (libc.so.6:index) redirected to 0x48331d0 (_vgnU_ifunc_wrapper) --48425-- REDIR: 0x5e3f630 (libc.so.6:strlen) redirected to 0x48331d0 (_vgnU_ifunc_wrapper) --48425-- REDIR: 0x5e48bb0 (libc.so.6:memrchr) redirected to 0x48331d0 (_vgnU_ifunc_wrapper) --48425-- REDIR: 0x5e40850 (libc.so.6:strcasecmp_l) redirected to 0x48331d0 (_vgnU_ifunc_wrapper) --48425-- REDIR: 0x5e403d0 (libc.so.6:memchr) redirected to 0x48331d0 (_vgnU_ifunc_wrapper) --48425-- REDIR: 0x5e5c930 (libc.so.6:wcslen) redirected to 0x48331d0 (_vgnU_ifunc_wrapper) --48425-- REDIR: 0x5e3fae0 (libc.so.6:strspn) redirected to 0x48331d0 (_vgnU_ifunc_wrapper) --48425-- REDIR: 0x5e40750 (libc.so.6:stpncpy) redirected to 0x48331d0 (_vgnU_ifunc_wrapper) --48425-- REDIR: 0x5e406f0 (libc.so.6:stpcpy) redirected to 0x48331d0 (_vgnU_ifunc_wrapper) --48425-- REDIR: 0x5e41c90 (libc.so.6:strchrnul) redirected to 0x48331d0 (_vgnU_ifunc_wrapper) --48425-- REDIR: 0x5e408a0 (libc.so.6:strncasecmp_l) redirected to 0x48331d0 (_vgnU_ifunc_wrapper) --48425-- REDIR: 0x5ecda70 (libc.so.6:__memcpy_chk) redirected to 0x48331d0 (_vgnU_ifunc_wrapper) --48425-- REDIR: 0x5e402f0 (libc.so.6:strstr) redirected to 0x48331d0 (_vgnU_ifunc_wrapper) --48425-- REDIR: 0x5e3f6b0 (libc.so.6:strncat) redirected to 0x48331d0 (_vgnU_ifunc_wrapper) --48425-- REDIR: 0x5ecdb30 (libc.so.6:__memmove_chk) redirected to 0x48331d0 (_vgnU_ifunc_wrapper) ==48425== WARNING: new redirection conflicts with existing -- ignoring it --48425-- old: 0x05f2b900 (__memcpy_chk_avx_una) R-> (2030.0) 0x04843b10 __memcpy_chk --48425-- new: 0x05f2b900 (__memcpy_chk_avx_una) R-> (2024.0) 0x048434d0 __memmove_chk ==48425== WARNING: new redirection conflicts with existing -- ignoring it --48425-- old: 0x05f2b900 (__memcpy_chk_avx_una) R-> (2030.0) 0x04843b10 __memcpy_chk --48425-- new: 0x05f2b900 (__memcpy_chk_avx_una) R-> (2024.0) 0x048434d0 __memmove_chk ==48425== WARNING: new redirection conflicts with existing -- ignoring it --48425-- old: 0x05f2b900 (__memcpy_chk_avx_una) R-> (2030.0) 0x04843b10 __memcpy_chk --48425-- new: 0x05f2b900 (__memcpy_chk_avx_una) R-> (2024.0) 0x048434d0 __memmove_chk ==48425== WARNING: new redirection conflicts with existing -- ignoring it --48425-- old: 0x05f2b900 (__memcpy_chk_avx_una) R-> (2030.0) 0x04843b10 __memcpy_chk --48425-- new: 0x05f2b900 (__memcpy_chk_avx_una) R-> (2024.0) 0x048434d0 __memmove_chk ==48425== WARNING: new redirection conflicts with existing -- ignoring it --48425-- old: 0x05f2b900 (__memcpy_chk_avx_una) R-> (2030.0) 0x04843b10 __memcpy_chk --48425-- new: 0x05f2b900 (__memcpy_chk_avx_una) R-> (2024.0) 0x048434d0 __memmove_chk ==48425== WARNING: new redirection conflicts with existing -- ignoring it --48425-- old: 0x05f2b900 (__memcpy_chk_avx_una) R-> (2030.0) 0x04843b10 __memcpy_chk --48425-- new: 0x05f2b900 (__memcpy_chk_avx_una) R-> (2024.0) 0x048434d0 __memmove_chk --48425-- REDIR: 0x5f28730 (libc.so.6:__strrchr_avx2) redirected to 0x483ea10 (rindex) --48425-- REDIR: 0x5f28900 (libc.so.6:__strlen_avx2) redirected to 0x483ef40 (strlen) --48425-- REDIR: 0x5e3a0e0 (libc.so.6:malloc) redirected to 0x483b780 (malloc) --48425-- REDIR: 0x5f2b910 (libc.so.6:__memcpy_avx_unaligned_erms) redirected to 0x48429f0 (memmove) --48425-- REDIR: 0x5f23df0 (libc.so.6:__strcmp_avx2) redirected to 0x483fed0 (strcmp) --48425-- REDIR: 0x5f24230 (libc.so.6:__strncmp_avx2) redirected to 0x483f670 (strncmp) --48425-- REDIR: 0x5f28310 (libc.so.6:__strchr_avx2) redirected to 0x483ebf0 (index) --48425-- REDIR: 0x5e3ffa0 (libc.so.6:__GI_strstr) redirected to 0x4843ca0 (__strstr_sse2) --48425-- REDIR: 0x5f24760 (libc.so.6:__memchr_avx2) redirected to 0x4840050 (memchr) --48425-- REDIR: 0x5e3ae80 (libc.so.6:realloc) redirected to 0x483df30 (realloc) --48425-- REDIR: 0x5e3a6d0 (libc.so.6:free) redirected to 0x483c9d0 (free) --48425-- REDIR: 0x5e3bb10 (libc.so.6:calloc) redirected to 0x483dce0 (calloc) --48425-- REDIR: 0x5f28540 (libc.so.6:__strchrnul_avx2) redirected to 0x4843540 (strchrnul) --48425-- REDIR: 0x5f2b8f0 (libc.so.6:__mempcpy_avx_unaligned_erms) redirected to 0x4843660 (mempcpy) --48425-- REDIR: 0x5e40fc0 (libc.so.6:strcasestr) redirected to 0x4843f80 (strcasestr) --48425-- REDIR: 0x5e5b3f0 (libc.so.6:__strstr_sse2_unaligned) redirected to 0x4843c20 (strstr) --48425-- REDIR: 0x5f2bd90 (libc.so.6:__memset_avx2_unaligned_erms) redirected to 0x48428e0 (memset) --48425-- REDIR: 0x5f28dc0 (libc.so.6:__strcat_avx2) redirected to 0x483ec20 (strcat) --48425-- REDIR: 0x5f2b900 (libc.so.6:__memcpy_chk_avx_unaligned_erms) redirected to 0x4843b10 (__memcpy_chk) --48425-- REDIR: 0x5f24ef0 (libc.so.6:__memcmp_avx2_movbe) redirected to 0x48421e0 (bcmp) --48425-- REDIR: 0x5afeb10 (libstdc++.so.6:operator new(unsigned long)) redirected to 0x483bdf0 (operator new(unsigned long)) --48425-- REDIR: 0x5afcd60 (libstdc++.so.6:operator delete(void*)) redirected to 0x483cf50 (operator delete(void*)) --48425-- REDIR: 0x5afeb70 (libstdc++.so.6:operator new[](unsigned long)) redirected to 0x483c510 (operator new[](unsigned long)) --48425-- REDIR: 0x5afcd90 (libstdc++.so.6:operator delete[](void*)) redirected to 0x483d6e0 (operator delete[](void*)) --48425-- REDIR: 0x5ecde20 (libc.so.6:__strcpy_chk) redirected to 0x48435c0 (__strcpy_chk) --48425-- REDIR: 0x5f2a1d0 (libc.so.6:__strncpy_avx2) redirected to 0x483f230 (strncpy) --48425-- REDIR: 0x5f2ab30 (libc.so.6:__stpcpy_avx2) redirected to 0x4842300 (stpcpy) ==48425== Stack overflow in thread #1: can't grow stack to 0x1ffe801000 ==48425== ==48425== Process terminating with default action of signal 11 (SIGSEGV) ==48425== Access not within mapped region at address 0x1FFE801FF8 ==48425== Stack overflow in thread #1: can't grow stack to 0x1ffe801000 ==48425== at 0x49BB7A1: vpCannyEdgeDetection::recursiveSearchForStrongEdge(std::pair const&) (vpCannyEdgeDetection.cpp:554) ==48425== If you believe this happened as a result of a stack ==48425== overflow in your program's main thread (unlikely but ==48425== possible), you can try to increase the size of the ==48425== main thread stack using the --main-stacksize= flag. ==48425== The main thread stack size used in this run was 8388608. ==48425== Stack overflow in thread #1: can't grow stack to 0x1ffe801000 ==48425== ==48425== Process terminating with default action of signal 11 (SIGSEGV) ==48425== Access not within mapped region at address 0x1FFE801FF0 ==48425== Stack overflow in thread #1: can't grow stack to 0x1ffe801000 ==48425== at 0x4833134: _vgnU_freeres (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_core-amd64-linux.so) ==48425== If you believe this happened as a result of a stack ==48425== overflow in your program's main thread (unlikely but ==48425== possible), you can try to increase the size of the ==48425== main thread stack using the --main-stacksize= flag. ==48425== The main thread stack size used in this run was 8388608. ==48425== ==48425== HEAP SUMMARY: ==48425== in use at exit: 112,928,022 bytes in 1,285,650 blocks ==48425== total heap usage: 1,314,248 allocs, 28,598 frees, 166,150,293 bytes allocated ==48425== ==48425== Searching for pointers to 1,285,650 not-freed blocks ==48425== Checked 121,234,872 bytes ==48425== ==48425== 16 bytes in 1 blocks are possibly lost in loss record 121 of 479 ==48425== at 0x483DD99: calloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) ==48425== by 0x8EA7EF0: g_malloc0 (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.6400.6) ==48425== by 0x8E26DDE: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x8E2A0D6: g_type_register_fundamental (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x8E05EDE: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x8DFF0B7: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x4011B99: call_init.part.0 (dl-init.c:72) ==48425== by 0x4011CA0: call_init (dl-init.c:30) ==48425== by 0x4011CA0: _dl_init (dl-init.c:119) ==48425== by 0x4001139: ??? (in /usr/lib/x86_64-linux-gnu/ld-2.31.so) ==48425== by 0xA: ??? ==48425== by 0x1FFF000156: ??? ==48425== by 0x1FFF000167: ??? ==48425== ==48425== 16 bytes in 1 blocks are possibly lost in loss record 122 of 479 ==48425== at 0x483B723: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) ==48425== by 0x483E017: realloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) ==48425== by 0x8EA7F3F: g_realloc (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.6400.6) ==48425== by 0x8E26D57: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x8E2A0D6: g_type_register_fundamental (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x8E05EDE: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x8DFF0B7: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x4011B99: call_init.part.0 (dl-init.c:72) ==48425== by 0x4011CA0: call_init (dl-init.c:30) ==48425== by 0x4011CA0: _dl_init (dl-init.c:119) ==48425== by 0x4001139: ??? (in /usr/lib/x86_64-linux-gnu/ld-2.31.so) ==48425== by 0xA: ??? ==48425== by 0x1FFF000156: ??? ==48425== ==48425== 16 bytes in 1 blocks are possibly lost in loss record 123 of 479 ==48425== at 0x483DD99: calloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) ==48425== by 0x8EA7EF0: g_malloc0 (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.6400.6) ==48425== by 0x8E26DDE: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x8E2A0D6: g_type_register_fundamental (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x8E05F41: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x8DFF0B7: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x4011B99: call_init.part.0 (dl-init.c:72) ==48425== by 0x4011CA0: call_init (dl-init.c:30) ==48425== by 0x4011CA0: _dl_init (dl-init.c:119) ==48425== by 0x4001139: ??? (in /usr/lib/x86_64-linux-gnu/ld-2.31.so) ==48425== by 0xA: ??? ==48425== by 0x1FFF000156: ??? ==48425== by 0x1FFF000167: ??? ==48425== ==48425== 16 bytes in 1 blocks are possibly lost in loss record 124 of 479 ==48425== at 0x483B723: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) ==48425== by 0x483E017: realloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) ==48425== by 0x8EA7F3F: g_realloc (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.6400.6) ==48425== by 0x8E26D57: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x8E2A0D6: g_type_register_fundamental (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x8E05F41: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x8DFF0B7: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x4011B99: call_init.part.0 (dl-init.c:72) ==48425== by 0x4011CA0: call_init (dl-init.c:30) ==48425== by 0x4011CA0: _dl_init (dl-init.c:119) ==48425== by 0x4001139: ??? (in /usr/lib/x86_64-linux-gnu/ld-2.31.so) ==48425== by 0xA: ??? ==48425== by 0x1FFF000156: ??? ==48425== ==48425== 16 bytes in 1 blocks are possibly lost in loss record 125 of 479 ==48425== at 0x483DD99: calloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) ==48425== by 0x8EA7EF0: g_malloc0 (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.6400.6) ==48425== by 0x8E26DDE: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x8E2A0D6: g_type_register_fundamental (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x8E0FFFF: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x8DFF0C1: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x4011B99: call_init.part.0 (dl-init.c:72) ==48425== by 0x4011CA0: call_init (dl-init.c:30) ==48425== by 0x4011CA0: _dl_init (dl-init.c:119) ==48425== by 0x4001139: ??? (in /usr/lib/x86_64-linux-gnu/ld-2.31.so) ==48425== by 0xA: ??? ==48425== by 0x1FFF000156: ??? ==48425== by 0x1FFF000167: ??? ==48425== ==48425== 16 bytes in 1 blocks are possibly lost in loss record 126 of 479 ==48425== at 0x483B723: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) ==48425== by 0x483E017: realloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) ==48425== by 0x8EA7F3F: g_realloc (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.6400.6) ==48425== by 0x8E26D57: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x8E2A0D6: g_type_register_fundamental (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x8E0FFFF: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x8DFF0C1: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x4011B99: call_init.part.0 (dl-init.c:72) ==48425== by 0x4011CA0: call_init (dl-init.c:30) ==48425== by 0x4011CA0: _dl_init (dl-init.c:119) ==48425== by 0x4001139: ??? (in /usr/lib/x86_64-linux-gnu/ld-2.31.so) ==48425== by 0xA: ??? ==48425== by 0x1FFF000156: ??? ==48425== ==48425== 16 bytes in 1 blocks are possibly lost in loss record 127 of 479 ==48425== at 0x483DD99: calloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) ==48425== by 0x8EA7EF0: g_malloc0 (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.6400.6) ==48425== by 0x8E26DDE: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x8E2A0D6: g_type_register_fundamental (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x8E0ACC3: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x8DFF0C6: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x4011B99: call_init.part.0 (dl-init.c:72) ==48425== by 0x4011CA0: call_init (dl-init.c:30) ==48425== by 0x4011CA0: _dl_init (dl-init.c:119) ==48425== by 0x4001139: ??? (in /usr/lib/x86_64-linux-gnu/ld-2.31.so) ==48425== by 0xA: ??? ==48425== by 0x1FFF000156: ??? ==48425== by 0x1FFF000167: ??? ==48425== ==48425== 16 bytes in 1 blocks are possibly lost in loss record 128 of 479 ==48425== at 0x483B723: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) ==48425== by 0x483E017: realloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) ==48425== by 0x8EA7F3F: g_realloc (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.6400.6) ==48425== by 0x8E26D57: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x8E2A0D6: g_type_register_fundamental (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x8E0ACC3: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x8DFF0C6: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x4011B99: call_init.part.0 (dl-init.c:72) ==48425== by 0x4011CA0: call_init (dl-init.c:30) ==48425== by 0x4011CA0: _dl_init (dl-init.c:119) ==48425== by 0x4001139: ??? (in /usr/lib/x86_64-linux-gnu/ld-2.31.so) ==48425== by 0xA: ??? ==48425== by 0x1FFF000156: ??? ==48425== ==48425== 96 bytes in 1 blocks are possibly lost in loss record 328 of 479 ==48425== at 0x483DD99: calloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) ==48425== by 0x8EA7EF0: g_malloc0 (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.6400.6) ==48425== by 0x8E260E7: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x8E2628A: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x8DFEFDE: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x4011B99: call_init.part.0 (dl-init.c:72) ==48425== by 0x4011CA0: call_init (dl-init.c:30) ==48425== by 0x4011CA0: _dl_init (dl-init.c:119) ==48425== by 0x4001139: ??? (in /usr/lib/x86_64-linux-gnu/ld-2.31.so) ==48425== by 0xA: ??? ==48425== by 0x1FFF000156: ??? ==48425== by 0x1FFF000167: ??? ==48425== by 0x1FFF00016A: ??? ==48425== ==48425== 96 bytes in 1 blocks are possibly lost in loss record 329 of 479 ==48425== at 0x483DD99: calloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) ==48425== by 0x8EA7EF0: g_malloc0 (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.6400.6) ==48425== by 0x8E260E7: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x8E2628A: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x8E2A0C8: g_type_register_fundamental (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x8E05EDE: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x8DFF0B7: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x4011B99: call_init.part.0 (dl-init.c:72) ==48425== by 0x4011CA0: call_init (dl-init.c:30) ==48425== by 0x4011CA0: _dl_init (dl-init.c:119) ==48425== by 0x4001139: ??? (in /usr/lib/x86_64-linux-gnu/ld-2.31.so) ==48425== by 0xA: ??? ==48425== by 0x1FFF000156: ??? ==48425== ==48425== 96 bytes in 1 blocks are possibly lost in loss record 330 of 479 ==48425== at 0x483DD99: calloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) ==48425== by 0x8EA7EF0: g_malloc0 (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.6400.6) ==48425== by 0x8E260E7: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x8E2628A: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x8E2A0C8: g_type_register_fundamental (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x8E05F41: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x8DFF0B7: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x4011B99: call_init.part.0 (dl-init.c:72) ==48425== by 0x4011CA0: call_init (dl-init.c:30) ==48425== by 0x4011CA0: _dl_init (dl-init.c:119) ==48425== by 0x4001139: ??? (in /usr/lib/x86_64-linux-gnu/ld-2.31.so) ==48425== by 0xA: ??? ==48425== by 0x1FFF000156: ??? ==48425== ==48425== 96 bytes in 1 blocks are possibly lost in loss record 331 of 479 ==48425== at 0x483DD99: calloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) ==48425== by 0x8EA7EF0: g_malloc0 (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.6400.6) ==48425== by 0x8E260E7: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x8E2628A: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x8E2A0C8: g_type_register_fundamental (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x8E0FFFF: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x8DFF0C1: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x4011B99: call_init.part.0 (dl-init.c:72) ==48425== by 0x4011CA0: call_init (dl-init.c:30) ==48425== by 0x4011CA0: _dl_init (dl-init.c:119) ==48425== by 0x4001139: ??? (in /usr/lib/x86_64-linux-gnu/ld-2.31.so) ==48425== by 0xA: ??? ==48425== by 0x1FFF000156: ??? ==48425== ==48425== 96 bytes in 1 blocks are possibly lost in loss record 332 of 479 ==48425== at 0x483DD99: calloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) ==48425== by 0x8EA7EF0: g_malloc0 (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.6400.6) ==48425== by 0x8E260E7: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x8E2628A: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x8E2A0C8: g_type_register_fundamental (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x8E0ACC3: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x8DFF0C6: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x4011B99: call_init.part.0 (dl-init.c:72) ==48425== by 0x4011CA0: call_init (dl-init.c:30) ==48425== by 0x4011CA0: _dl_init (dl-init.c:119) ==48425== by 0x4001139: ??? (in /usr/lib/x86_64-linux-gnu/ld-2.31.so) ==48425== by 0xA: ??? ==48425== by 0x1FFF000156: ??? ==48425== ==48425== 132 bytes in 1 blocks are possibly lost in loss record 360 of 479 ==48425== at 0x483DD99: calloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) ==48425== by 0x8EA7EF0: g_malloc0 (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.6400.6) ==48425== by 0x8E270F4: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x8E2A159: g_type_register_fundamental (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x8E05EDE: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x8DFF0B7: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x4011B99: call_init.part.0 (dl-init.c:72) ==48425== by 0x4011CA0: call_init (dl-init.c:30) ==48425== by 0x4011CA0: _dl_init (dl-init.c:119) ==48425== by 0x4001139: ??? (in /usr/lib/x86_64-linux-gnu/ld-2.31.so) ==48425== by 0xA: ??? ==48425== by 0x1FFF000156: ??? ==48425== by 0x1FFF000167: ??? ==48425== ==48425== 132 bytes in 1 blocks are possibly lost in loss record 361 of 479 ==48425== at 0x483DD99: calloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) ==48425== by 0x8EA7EF0: g_malloc0 (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.6400.6) ==48425== by 0x8E270F4: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x8E2A159: g_type_register_fundamental (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x8E05F41: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x8DFF0B7: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x4011B99: call_init.part.0 (dl-init.c:72) ==48425== by 0x4011CA0: call_init (dl-init.c:30) ==48425== by 0x4011CA0: _dl_init (dl-init.c:119) ==48425== by 0x4001139: ??? (in /usr/lib/x86_64-linux-gnu/ld-2.31.so) ==48425== by 0xA: ??? ==48425== by 0x1FFF000156: ??? ==48425== by 0x1FFF000167: ??? ==48425== ==48425== 148 bytes in 1 blocks are possibly lost in loss record 376 of 479 ==48425== at 0x483DD99: calloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) ==48425== by 0x8EA7EF0: g_malloc0 (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.6400.6) ==48425== by 0x8E26F08: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x8E2A159: g_type_register_fundamental (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x8E0FFFF: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x8DFF0C1: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x4011B99: call_init.part.0 (dl-init.c:72) ==48425== by 0x4011CA0: call_init (dl-init.c:30) ==48425== by 0x4011CA0: _dl_init (dl-init.c:119) ==48425== by 0x4001139: ??? (in /usr/lib/x86_64-linux-gnu/ld-2.31.so) ==48425== by 0xA: ??? ==48425== by 0x1FFF000156: ??? ==48425== by 0x1FFF000167: ??? ==48425== ==48425== 148 bytes in 1 blocks are possibly lost in loss record 377 of 479 ==48425== at 0x483DD99: calloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) ==48425== by 0x8EA7EF0: g_malloc0 (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.6400.6) ==48425== by 0x8E26F08: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x8E2A159: g_type_register_fundamental (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x8E0ACC3: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x8DFF0C6: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x4011B99: call_init.part.0 (dl-init.c:72) ==48425== by 0x4011CA0: call_init (dl-init.c:30) ==48425== by 0x4011CA0: _dl_init (dl-init.c:119) ==48425== by 0x4001139: ??? (in /usr/lib/x86_64-linux-gnu/ld-2.31.so) ==48425== by 0xA: ??? ==48425== by 0x1FFF000156: ??? ==48425== by 0x1FFF000167: ??? ==48425== ==48425== 184 bytes in 1 blocks are possibly lost in loss record 397 of 479 ==48425== at 0x483DFAF: realloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) ==48425== by 0x8EA7F3F: g_realloc (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.6400.6) ==48425== by 0x8E26063: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x8E2A324: g_type_register_static (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x8E11D12: g_param_type_register_static (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x8E147EA: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x8DFF0CB: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6) ==48425== by 0x4011B99: call_init.part.0 (dl-init.c:72) ==48425== by 0x4011CA0: call_init (dl-init.c:30) ==48425== by 0x4011CA0: _dl_init (dl-init.c:119) ==48425== by 0x4001139: ??? (in /usr/lib/x86_64-linux-gnu/ld-2.31.so) ==48425== by 0xA: ??? ==48425== by 0x1FFF000156: ??? ==48425== ==48425== LEAK SUMMARY: ==48425== definitely lost: 0 bytes in 0 blocks ==48425== indirectly lost: 0 bytes in 0 blocks ==48425== possibly lost: 1,352 bytes in 18 blocks ==48425== still reachable: 112,926,670 bytes in 1,285,632 blocks ==48425== of which reachable via heuristic: ==48425== newarray : 1,536 bytes in 16 blocks ==48425== suppressed: 0 bytes in 0 blocks ==48425== Reachable blocks (those to which a pointer was found) are not shown. ==48425== To see them, rerun with: --leak-check=full --show-leak-kinds=all ==48425== ==48425== ERROR SUMMARY: 18 errors from 18 contexts (suppressed: 0 from 0) ```
rolalaro commented 1 week ago

I suspect that the high threshold is too high, leading to all the edges being considered as weak edges. Due to that, the vpCannyEdgeDetection::recursiveSearchForStrongEdge could be called until the stack of calls is too high to be handled. Could you please replace the code of this method by the following, compile and give me the result of the print please ? Basically, instead of calling vpCannyEdgeDetection::recursiveSearchForStrongEdge, the method vpCannyEdgeDetection::performEdgeTracking will count the number of weak and strong edges.

void
vpCannyEdgeDetection::performEdgeTracking()
{
  std::map<std::pair<unsigned int, unsigned int>, EdgeType>::iterator it;
  std::map<std::pair<unsigned int, unsigned int>, EdgeType>::iterator m_edgePointsCandidates_end = m_edgePointsCandidates.end();
  unsigned int nbStrongEdges = 0, nbWeakEdges = 0;
  for (it = m_edgePointsCandidates.begin(); it != m_edgePointsCandidates_end; ++it) {
    if (it->second == STRONG_EDGE) {
      m_edgeMap[it->first.first][it->first.second] = 255;
      if (m_storeListEdgePoints) {
        m_edgePointsList.push_back(vpImagePoint(it->first.first, it->first.second));
      }
      ++nbStrongEdges;
    }
    else if (it->second == WEAK_EDGE) {
      // if (recursiveSearchForStrongEdge(it->first)) {
      m_edgeMap[it->first.first][it->first.second] = 255;
    // }
      ++nbWeakEdges;
    }
  }
  std::cout << "[vpCannyEdgeDetection::performEdgeTracking]#strong edges = " << nbStrongEdges << std::endl;
  std::cout << "[vpCannyEdgeDetection::performEdgeTracking]#weak edges = " << nbWeakEdges << std::endl;
}
s-trinh commented 6 days ago

The output:

I_gray=1788x942
[vpCannyEdgeDetection::performEdgeTracking]#strong edges = 102138
[vpCannyEdgeDetection::performEdgeTracking]#weak edges = 539881
rolalaro commented 6 days ago

OK not what I expected to be honnest, I was expected something like 0 strong edges and a lot of weak edges. What's weird is that I cannot reproduce it, the Mac OS CIs worked but the Ubuntu 22.04 CIs failed.

The differences between our configurations:

By any chance do you have Docker ? If so, could you create an image based on Ubuntu 22.04 with the same c++ compiler version than I have to see if it changes anything ? It might not, because it seems that the OS release is different between the Docker images and the one that is installed on my computer.

Other question: have you ever faced this segfault with other images ? Such as a with an image with a gray empty square inside ? (it can be generated using vpImageDraw)

rolalaro commented 5 days ago

After a second thought, I will create a Docker that reproduces your configuration, try to reproduce the bug and come back to you if that's fine with you ?

rolalaro commented 5 days ago

OK I downloaded the image you posted (before I did a screenshot because I didn't find how to save it) and now I have a segfault on my computer too. So it's not due to a different configuration, there is a segfault happening somewhere. I'll continue to dig in.

rolalaro commented 5 days ago

Found the problem ! My original thought was correct, the problem came from the upper threshold ratio you used. It must be between 0 and 1, because it corresponds to the ratio of points that must have the norm of their gradient lower than the found threshold. In other words, if you set the upper ratio to 0.5, it means that at least 50% of the pixels will have a gradient lower than the found threshold.

See #1490 for the fix.

s-trinh commented 5 days ago

Thanks for your quick feedback. I also have to refresh the webpage sometimes in order to open the image in another tab on Github.


It looks like for certain values of Gaussian std and for some over-exposed images we are hitting somehow the limit of the stack size.

For instance when using this image or the image from the first post

2015_03449

Canny Configuration:
    Filtering + gradient operators = gaussianblur+sobel-filtering
    Gaussian filter kernel size = 3
    Gaussian filter standard deviation = 0.500000
    Gradient filter kernel size = 3
    Canny edge filter thresholds = [-1.000000 ; -1.000000]
    Canny edge filter thresholds ratio (for auto-thresholding) = [0.600000 ; 0.800000]
[vpCannyEdgeDetection::performEdgeTracking]#strong edges = 77555
[vpCannyEdgeDetection::performEdgeTracking]#weak edges = 264432

I_canny_visp

It works correctly with ./tutorial-canny -i /tmp/2015_03449.png --gradient 3 0.1.


Increasing the stack size make it works.

ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 62389
max locked memory       (kbytes, -l) 65536
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 62389
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

ulimit -s 16384

ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 62389
max locked memory       (kbytes, -l) 65536
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 16384
cpu time               (seconds, -t) unlimited
max user processes              (-u) 62389
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

./tutorial-canny -i /tmp/2015_03449.png --gradient 3 0.5
Canny Configuration:
    Filtering + gradient operators = gaussianblur+sobel-filtering
    Gaussian filter kernel size = 3
    Gaussian filter standard deviation = 0.500000
    Gradient filter kernel size = 3
    Canny edge filter thresholds = [-1.000000 ; -1.000000]
    Canny edge filter thresholds ratio (for auto-thresholding) = [0.600000 ; 0.800000]

And the result image:

I_canny_visp

fspindle commented 5 days ago

This issue seems definitively due to the recursive algorithm. I remember that in vpDot that implements also a recursive algorithm, we had also issues with the size of the stack.

The fix that I found on that time was to add in vpDot.cpp.

#ifdef VISP_USE_MSVC
#pragma comment(linker, "/STACK:256000000") // Increase max recursion depth
#endif

Similar code could be tested to see if it helps.

rolalaro commented 5 days ago

@s-trinh oh indeed the results largely differ depending on the gradient standard deviation ! My bad, I tested the algorithm on some images coming from a dataset known for testing Canny implementations, but I didn't think to try it on overexposed images. I will try the solution proposed by @fspindle and let you know the results.