Am 15.03.22 um 09:28 schrieb Manolo:
Observing some rare and completely random crashes just clicking around with the demo program.
Luckily I could finally catch one under a debugging session. Seems to have something to do with tooltips:
demo: ../../../../src/cairo.c:524: cairo_destroy: Assertion `CAIRO_REFERENCE_COUNT_HAS_REFERENCE (&cr->ref_count)' failed.
Program received signal SIGABRT, Aborted.
#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
#1 0x00007ffff7522859 in __GI_abort () at abort.c:79
#2 0x00007ffff7522729 in __assert_fail_base
(fmt=0x7ffff76b8588 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=0x7ffff7c7a700 "CAIRO_REFERENCE_COUNT_HAS_REFERENCE (&cr->ref_count)", file=0x7ffff7c7a697 "../../../../src/cairo.c", line=524, function=<optimized out>) at assert.c:92
#3 0x00007ffff7534006 in __GI___assert_fail
(assertion=0x7ffff7c7a700 "CAIRO_REFERENCE_COUNT_HAS_REFERENCE (&cr->ref_count)", file=0x7ffff7c7a697 "../../../../src/cairo.c", line=524, function=0x7ffff7c7a758 "cairo_destroy") at assert.c:101
#4 0x00007ffff7c14fe9 in () at /usr/lib/x86_64-linux-gnu/libcairo.so.2
#5 0x00005555555bc263 in Fl_X11_Window_Driver::hide() (this=0x555555805e30)
at drivers/X11/Fl_X11_Window_Driver.cxx:434
#6 0x00005555555a3e84 in Fl_Window::hide() (this=0x55555580bdf0) at Fl_Window.cxx:555
#7 0x00005555555a12b0 in Fl_Tooltip::exit_(Fl_Widget*) (w=0x0) at Fl_Tooltip.cxx:251
#8 0x00005555555a1107 in Fl_Tooltip::enter_(Fl_Widget*) (w=0x55555572cf20) at Fl_Tooltip.cxx:207
#9 0x0000555555572f71 in Fl::handle_(int, Fl_Window*) (e=11, window=0x5555556745e0) at Fl.cxx:1244
#10 0x0000555555572cab in Fl::handle(int, Fl_Window*) (e=11, window=0x5555556745e0) at Fl.cxx:1157
#11 0x00005555555c2730 in fl_handle(_XEvent const&) (thisevent=...) at Fl_x.cxx:2064
#12 0x00005555555bcfa8 in do_queued_events() () at Fl_x.cxx:116
#13 0x00005555555bd32f in fd_callback(int, void*) () at Fl_x.cxx:312
#14 0x00005555555e5f87 in Fl_Unix_System_Driver::poll_or_select_with_delay(double) (this=
0x55555565e250, time_to_wait=11.970500999999993) at drivers/Unix/Fl_Unix_System_Driver.cxx:814
#15 0x00005555555bd047 in Fl_X11_System_Driver::poll_or_select_with_delay(double)
(this=0x55555565e250, time_to_wait=11.970500999999993) at Fl_x.cxx:138
#16 0x00005555555e638e in Fl_Unix_System_Driver::wait(double)
(this=0x55555565e250, time_to_wait=11.970500999999993)
at drivers/Unix/Fl_Unix_System_Driver.cxx:855
#17 0x0000555555571d99 in Fl::wait(double) (time_to_wait=1e+20) at Fl.cxx:482
#18 0x0000555555571dc1 in Fl::run() () at Fl.cxx:502
#19 0x0000555555571482 in main(int, char**) (argc=1, argv=0x7fffffffdf38) at demo.cxx:613
Just tried again with this assumption and now I can replicate:
Start any program using tooltips and wait for a tooltip to appear. At the second time the crash occurs.