geany / geany-plugins

The combined Geany Plugins collection
http://plugins.geany.org/
590 stars 264 forks source link

overview causes geany to crash when crating a new file and clicking in the file area. #1354

Open l33tlinuxh4x0r opened 4 months ago

l33tlinuxh4x0r commented 4 months ago

Without overview geany does not crash... when overview is enabled creating a new file in Linux X11 causes geany to crash when the file is clicked. Windows and wayland seem to be unaffected. See bug https://github.com/geany/geany/issues/2736

elextr commented 4 months ago

Overview plugin uses Scintilla to generate the overview, but there have been no changes to the plugin for many years, but IIRC there have been changes to Scintilla, some of which may be incompatible with such old code.

As nothing has been heard from the "maintainer" of the overview plugin its probably unlikely it will be fixed unless "somebody" does it, or the plugin is shown to be the cause of a crash it may be dropped if nobody cares for it.

l33tlinuxh4x0r commented 4 months ago

Fwiw I love the plugin... I just don't like the crash :/

b4n commented 4 months ago

FWIW I can confirm the crash, and got this GDB backtrace and Valgrind log:

GDB backtrace for the crash (nothing new though) ```gdb Thread 1 "geany" received signal SIGSEGV, Segmentation fault. 0x00007fffeefb2f51 in ibus_input_context_reset () from /lib/x86_64-linux-gnu/libibus-1.0.so.5 (gdb) bt #0 0x00007fffeefb2f51 in ibus_input_context_reset () at /lib/x86_64-linux-gnu/libibus-1.0.so.5 #1 0x00007ffff408edc2 in () at /usr/lib/x86_64-linux-gnu/gtk-3.0/3.0.0/immodules/im-ibus.so #6 0x00007ffff769ddbf in (instance=instance@entry=0x555556ae1920, signal_id=, detail=detail@entry=0) at ../../../gobject/gsignal.c:3606 #2 0x00007ffff6e90bc7 in _gtk_marshal_BOOLEAN__BOXED (closure=0x555556b229a0, return_value=0x7fffffffd660, n_param_values=, param_values=0x7fffffffd6c0, invocation_hint=, marshal_data=) at gtk/gtkmarshalers.c:84 #3 0x00007ffff76843b0 in g_closure_invoke (closure=0x555556b229a0, return_value=return_value@entry=0x7fffffffd660, n_param_values=2, param_values=param_values@entry=0x7fffffffd6c0, invocation_hint=invocation_hint@entry=0x7fffffffd640) at ../../../gobject/gclosure.c:832 #4 0x00007ffff7697076 in signal_emit_unlocked_R (node=, detail=detail@entry=0, instance=instance@entry=0x555556ae1920, emission_return=emission_return@entry=0x7fffffffd7b0, instance_and_params=instance_and_params@entry=0x7fffffffd6c0) at ../../../gobject/gsignal.c:3796 #5 0x00007ffff769d42d in g_signal_emit_valist (instance=, signal_id=, detail=, var_args=var_args@entry=0x7fffffffd860) at ../../../gobject/gsignal.c:3559 #7 0x00007ffff7169844 in gtk_widget_event_internal (widget=widget@entry=0x555556ae1920 [ScintillaObject], event=event@entry=0x555556ad59e0) at ../../../gtk/gtkwidget.c:7812 #8 0x00007ffff716c481 in gtk_widget_event_internal (event=0x555556ad59e0, widget=0x555556ae1920 [ScintillaObject]) at ../../../gtk/gtkwidget.c:7383 #9 0x00007ffff700783e in propagate_event_up (topmost=, event=, widget=0x555556ae1920 [ScintillaObject]) at ../../../gtk/gtkmain.c:2598 #10 propagate_event (widget=widget@entry=0x555556ae1920 [ScintillaObject], event=event@entry=0x555556ad59e0, captured=captured@entry=0, topmost=topmost@entry=0x0) at ../../../gtk/gtkmain.c:2701 #11 0x00007ffff7008b7c in gtk_propagate_event (widget=widget@entry=0x555556ae1920 [ScintillaObject], event=event@entry=0x555556ad59e0) at ../../../gtk/gtkmain.c:2735 #12 0x00007ffff70092f6 in gtk_main_do_event (event=0x555556ad59e0) at ../../../gtk/gtkmain.c:1921 #13 gtk_main_do_event (event=) at ../../../gtk/gtkmain.c:1691 #14 0x00007ffff7ec6815 in _gdk_event_emit (event=event@entry=0x555556ad59e0) at ../../../gdk/gdkevents.c:73 #15 0x00007ffff7f207a2 in gdk_event_source_dispatch (source=, callback=, user_data=) at ../../../gdk/x11/gdkeventsource.c:367 #16 0x00007ffff6b3e7a9 in g_main_dispatch (context=0x555555630ba0) at ../../../glib/gmain.c:3454 #17 g_main_context_dispatch (context=context@entry=0x555555630ba0) at ../../../glib/gmain.c:4172 #18 0x00007ffff6b3ea38 in g_main_context_iterate (context=0x555555630ba0, block=block@entry=1, dispatch=dispatch@entry=1, self=) at ../../../glib/gmain.c:4248 #19 0x00007ffff6b3ecef in g_main_loop_run (loop=loop@entry=0x5555566c7470) at ../../../glib/gmain.c:4448 #20 0x00007ffff7008495 in gtk_main () at ../../../gtk/gtkmain.c:1329 #21 0x00007ffff7a9cf1e in main_lib (argc=, argv=) at ../../src/libmain.c:1260 #22 0x0000555555555142 in main (argc=, argv=) at ../../src/main.c:27 ```
Memcheck report for the crash: ```valgrind memcheck ==3332905== Invalid read of size 8 ==3332905== at 0xB697DA6: ??? (in /usr/lib/x86_64-linux-gnu/gtk-3.0/3.0.0/immodules/im-ibus.so) ==3332905== by 0x4ED2BC6: _gtk_marshal_BOOLEAN__BOXED (gtkmarshalers.c:84) ==3332905== by 0x5B5A3AF: g_closure_invoke (gclosure.c:832) ==3332905== by 0x5B6D075: signal_emit_unlocked_R.isra.0 (gsignal.c:3796) ==3332905== by 0x5B7342C: g_signal_emit_valist (gsignal.c:3559) ==3332905== by 0x5B73DBE: g_signal_emit (gsignal.c:3606) ==3332905== by 0x51AB843: gtk_widget_event_internal.part.0 (gtkwidget.c:7812) ==3332905== by 0x504983D: propagate_event_up (gtkmain.c:2598) ==3332905== by 0x504983D: propagate_event (gtkmain.c:2701) ==3332905== by 0x504B2F5: gtk_main_do_event (gtkmain.c:1921) ==3332905== by 0x504B2F5: gtk_main_do_event (gtkmain.c:1691) ==3332905== by 0x569F814: _gdk_event_emit (gdkevents.c:73) ==3332905== by 0x56F97A1: gdk_event_source_dispatch (gdkeventsource.c:367) ==3332905== by 0x5BFD7A8: g_main_dispatch (gmain.c:3454) ==3332905== by 0x5BFD7A8: g_main_context_dispatch (gmain.c:4172) ==3332905== Address 0x315ff7e8 is 72 bytes inside a block of size 176 free'd ==3332905== at 0x484317B: free (vg_replace_malloc.c:872) ==3332905== by 0x5B7C213: g_type_free_instance (gtype.c:2003) ==3332905== by 0x5BF9A28: g_source_callback_unref (gmain.c:1739) ==3332905== by 0x5BF9A28: g_source_callback_unref (gmain.c:1732) ==3332905== by 0x5BF9F0E: g_source_destroy_internal (gmain.c:1404) ==3332905== by 0x5BFD70F: g_main_dispatch (gmain.c:3484) ==3332905== by 0x5BFD70F: g_main_context_dispatch (gmain.c:4172) ==3332905== by 0x5BFDA37: g_main_context_iterate.constprop.0 (gmain.c:4248) ==3332905== by 0x5BFDCEE: g_main_loop_run (gmain.c:4448) ==3332905== by 0x504A494: gtk_main (gtkmain.c:1329) ==3332905== by 0x48EDF1D: main_lib (libmain.c:1260) ==3332905== by 0x109141: main (main.c:27) ==3332905== Block was alloc'd at ==3332905== at 0x48407B4: malloc (vg_replace_malloc.c:381) ==3332905== by 0x5C03678: g_malloc (gmem.c:130) ==3332905== by 0x5C1C011: g_slice_alloc (gslice.c:1074) ==3332905== by 0x5C1C648: g_slice_alloc0 (gslice.c:1100) ==3332905== by 0x5B7BE8C: g_type_create_instance (gtype.c:1903) ==3332905== by 0x5B5FD2F: g_object_new_internal (gobject.c:2228) ==3332905== by 0x5B613FB: g_object_new_with_properties (gobject.c:2391) ==3332905== by 0x5B62000: g_object_new (gobject.c:2037) ==3332905== by 0xB699591: ibus_im_context_new (in /usr/lib/x86_64-linux-gnu/gtk-3.0/3.0.0/immodules/im-ibus.so) ==3332905== by 0x5027241: _gtk_im_module_create (gtkimmodule.c:656) ==3332905== by 0x5027EBB: gtk_im_multicontext_get_slave (gtkimmulticontext.c:281) ==3332905== by 0x502840D: gtk_im_multicontext_set_client_window (gtkimmulticontext.c:331) ==3332905== ```

I however have for now no clue what the issue is or even where (is it Scintilla doing something problematic with multiple concurrent views, is it a timing bug in IBus or GTK?).

b4n commented 4 months ago

BTW, somebody motivated enough could try and find what broke this plugin, it could help debug the issue. Be it testing various Geany versions or even better, using git bisect.

elextr commented 4 months ago

@l33tlinuxh4x0r in this context "care" means "does the work to fix it", as in care and feeding, not just "like" it :grin:

l33tlinuxh4x0r commented 3 months ago

@l33tlinuxh4x0r in this context "care" means "does the work to fix it", as in care and feeding, not just "like" it 😁

If I had the skills I would fix it, however I don't so hoping that someone else will take this up.

fmbearmf commented 3 months ago

culprit is likely in overview/overview/overviewscintilla.c

porter312 commented 1 day ago

Just wanted to confirm the issue with Linux Mint 22 and let you know: as a user since 2006, this will be my goodbye to Geany.

It was already weird how basic modern features like Overview (which even Mint's basic text editor has) and Split Window were not native features but 3rd party plugins, and suffered the common issue 3rd party plugins usually do: not working with each other. But now, I can't even have an Overview without opening a new tab completely crashing my IDE. I can't work with this.

Yes, I understand that you may be offended by this blunt feedback and remind me how Geany is FOSS, but at the end of the day my time isn't free either. Sorry and thanks for being great before. Maybe you'll make Geany great in the future.

elextr commented 1 day ago

@porter312 since your "time is not free" means your approach is to consume from others and not contribute in return you are probably better off somewhere else.

porter312 commented 1 day ago

@elextr So financial donations and reporting issues don't count? Most developers these days have become too soft and emotional. This is why I was blunt and didn't sugar coat it, so that we would immediately get to the point. You can either be rational and accept that I in fact contributed here by wasting time having my project crash and then spending time giving free feedback here, or you can be merely offended and keep Geany in this state, the choice is yours.

I contribute a lot to society, but I have a feeling of duty even for stuff I do for free: because free work can still harm other people and I'm not absolved from any moral resposibility because I did it for free. Sadly many people don't think that way.

elextr commented 1 day ago

Most developers these days have become too soft and emotional.

As you appear to be from your self defence.

All I provided was agreement that a project better shaped to your needs (described quoting your words) may be found elsewhere since it is simply a fact that Geany is a low contribution totally volunteer project and nobody can be forced to spend their effort on any specific feature unless they want to.

That makes Geany clearly an inappropriate tool for you since the contributors appear to consider other features more essential of their available effort, and so not to have the available effort and/or interest for items that you consider essential.

If you can't run without an overview or some other specific feature, and nobody has contributed an implementation of the feature or a fix of an existing implementation, then you do indeed need to use a different tool or find someone to contribute fixes or new implementations of your features so you can have them.

porter312 commented 1 day ago

You literally accused me of only consuming and not contributing, you were clearly not accepting the feedback and instead just being passive aggressive about it.

But yes, totally, "if tool can't do A and I need A then I need to use another tool". I know that without you being patronizing about it, the reason I posted was I though it was valuable to provide feedbaxk that these 3rd party plugins breaking down over the years and their features not being incorporated to othe core app causes users of 18 years to be forced to migrate.

Anyway, whatever.