Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
l33tlinuxh4x0r opened this issue Jun 1, 2024 · 12 comments

Comments

@l33tlinuxh4x0r
Copy link

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 geany/geany#2736

@elextr
Copy link
Member

elextr commented Jun 1, 2024

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
Copy link
Author

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

@b4n
Copy link
Member

b4n commented Jun 3, 2024

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

GDB backtrace for the crash (nothing new though)
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 <emit signal ??? on instance 0x555556ae1920 [ScintillaObject]>
    (instance=instance@entry=0x555556ae1920, signal_id=<optimized out>, detail=detail@entry=0) at ../../../gobject/gsignal.c:3606
    #2  0x00007ffff6e90bc7 in _gtk_marshal_BOOLEAN__BOXED
    (closure=0x555556b229a0, return_value=0x7fffffffd660, n_param_values=<optimized out>, param_values=0x7fffffffd6c0, invocation_hint=<optimized out>, marshal_data=<optimized out>) 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=<optimized out>, 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=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, 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=<optimized out>, event=<optimized out>, 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=<optimized out>) 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=<optimized out>, callback=<optimized out>, user_data=<optimized out>)
    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=<optimized out>)
    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=<optimized out>, argv=<optimized out>) at ../../src/libmain.c:1260
#22 0x0000555555555142 in main (argc=<optimized out>, argv=<optimized out>) at ../../src/main.c:27
Memcheck report for the crash:
==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 b4n added the bug label Jun 3, 2024
@b4n
Copy link
Member

b4n commented Jun 3, 2024

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
Copy link
Member

elextr commented Jun 4, 2024

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

@l33tlinuxh4x0r
Copy link
Author

@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
Copy link

fmbearmf commented Jul 3, 2024

culprit is likely in overview/overview/overviewscintilla.c

@porter312
Copy link

porter312 commented Oct 1, 2024

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
Copy link
Member

elextr commented Oct 1, 2024

@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
Copy link

@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
Copy link
Member

elextr commented Oct 2, 2024

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
Copy link

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants