lava / matplotlib-cpp

Extremely simple yet powerful header-only C++ plotting library built on the popular matplotlib
MIT License
4.27k stars 1.12k forks source link

Some examples dont work (segfault and std::runtime_error) #316

Open 2shaar2059 opened 2 years ago

2shaar2059 commented 2 years ago

I cloned the repo, made a build directory and made all of the examples. When trying to run them, however, certain ones worked and others didnt. The ones that simply segfaulted still displayed a plot. the ones that resulted in a runtime error didnt even show a plot.

System: OS: Ubuntu 20.04.4 LTS x86_64 Kernel: 5.4.0-113-generic "python3 --version" gives Python 3.8.10

$ ./animation Segmentation fault (core dumped)

$ ./basic Saving result to ./basic.png Segmentation fault (core dumped)

$ ./contour Segmentation fault (core dumped)

$ ./fill Segmentation fault (core dumped)

$ ./bar Segmentation fault (core dumped)

$ ./colorbar Segmentation fault (core dumped)

$ ./lines3d Segmentation fault (core dumped)

$ ./minimal Segmentation fault (core dumped)

$ ./surface Segmentation fault (core dumped)

$ ./modern Segmentation fault (core dumped)

$ ./spy Segmentation fault (core dumped)

$ ./subplot2grid Segmentation fault (core dumped)

$ ./update Segmentation fault (core dumped)

$ ./xkcd findfont: Font family ['xkcd', 'xkcd Script', 'Humor Sans', 'Comic Neue', 'Comic Sans MS'] not found. Falling back to DejaVu Sans. findfont: Font family ['xkcd', 'xkcd Script', 'Humor Sans', 'Comic Neue', 'Comic Sans MS'] not found. Falling back to DejaVu Sans. Segmentation fault (core dumped)

$ ./fill_inbetween terminate called after throwing an instance of 'std::runtime_error' what(): Call to show() failed. Aborted (core dumped)

$ ./nonblock terminate called after throwing an instance of 'std::runtime_error' what(): Call to subplot() failed. Aborted (core dumped)

xiang-tao commented 1 year ago

I ran into a similar error to yours, my bug report is:

terminate called after throwing an instance of 'std::runtime_error' ,what(): No axis

The reason for my error is that Ubuntu installed matplotlib in two ways:

sudo pip3 install matplotlib
sudo apt install python3-matplotlib

Therefore, one of them should be uninstalled when performing 3D drawing, so I executed:

sudo pip3 uninstall matplotlib

After that it ran successfully.

mitrakelly commented 1 year ago

I am seeing the same problem and this solution did not work for me. I am running on Windows and I have only one installation of matplotlib. It's version 3.7.1.

kevinpowell commented 1 year ago

Same error for me. Arch linux with python 3.10.10 here's the backtrace from gdb: (gdb) bt

0 __pthread_kill_implementation (threadid=, signo=signo@entry=6, no_tid=no_tid@entry=0)

at pthread_kill.c:44

1 0x00007ffff74a0953 in __pthread_kill_internal (signo=6, threadid=) at pthread_kill.c:78

2 0x00007ffff7451ea8 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26

3 0x00007ffff743b53d in __GI_abort () at abort.c:79

4 0x00007ffff769a833 in __gnu_cxx::__verbose_terminate_handler ()

at /usr/src/debug/gcc/gcc/libstdc++-v3/libsupc++/vterminate.cc:95

5 0x00007ffff76a6d0c in cxxabiv1::terminate (handler=)

at /usr/src/debug/gcc/gcc/libstdc++-v3/libsupc++/eh_terminate.cc:48

6 0x00007ffff76a6d79 in std::terminate () at /usr/src/debug/gcc/gcc/libstdc++-v3/libsupc++/eh_terminate.cc:58

7 0x00007ffff76a6fdd in cxxabiv1::cxa_throw (obj=,

tinfo=0x555555562d60 <typeinfo for std::runtime_error@GLIBCXX_3.4>,
dest=0x7ffff76be480 <std::runtime_error::~runtime_error()>)
at /usr/src/debug/gcc/gcc/libstdc++-v3/libsupc++/eh_throw.cc:98

8 0x000055555555a369 in matplotlibcpp::plot_surface (x=std::vector of length 41, capacity 64 = {...},

y=std::vector of length 41, capacity 64 = {...}, z=std::vector of length 41, capacity 64 = {...},
keywords=std::map with 0 elements, fig_number=0) at ../matplotlibcpp.h:567

9 0x00005555555569e7 in main () at surface.cpp:22

kevinpowell commented 1 year ago

And, I've got a fix for this issue. see https://stackoverflow.com/questions/76077363/why-does-matplotlib-cpp-throw-runtime-exceptions-in-the-3d-examples

lanzhan777 commented 11 months ago

Same issue. It seem because python matplotlib API has changed. I change matplotlib 3.7.2 to matplotlib 3.6.1 and it works.