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

[1.15.5] regression: core dump when closing liferea with multiple tabs open (in Debian) #1351

Open
paulgevers opened this issue Mar 28, 2024 · 4 comments

Comments

@paulgevers
Copy link
Contributor

Since a while I have an autopkgtest 1 added to the Debian build of liferea. Most likely due to commit 5bf126b the test broke and due to the time_t transition that's currently ongoing I ignored the failure for some days. Today I debugged a bit, got the test to start up again and was surprised it causes a segmentation fault. As I was happily using 1.15.5 for daily use, it had to be something non-default. I figured out I could crash my normal instance too, if I opened multiple tabs (in my case, FAQ, Help Contents and Quick Reference) and then quit liferea. See the stack trace below.

I hope this report is useful, should be easy to reproduce.

Thread 1 "liferea" received signal SIGSEGV, Segmentation fault.
0x000055555559e1af in ?? ()
(gdb) bt full
#0  0x000055555559e1af in ?? ()
No symbol table info available.
#1  0x00007ffff0d48a8c in g_object_unref (_object=0x5555558d3500) at ../../../gobject/gobject.c:3941
        weak_locations = <optimized out>
        nqueue = 0x555556258ed0
        object = <optimized out>
        old_ref = <optimized out>
        retry_atomic_decrement1 = <optimized out>
        object = <optimized out>
        old_ref = <optimized out>
        __func__ = "g_object_unref"
        retry_atomic_decrement1 = <optimized out>
        _g_boolean_var_133 = <optimized out>
        gaig_temp = <optimized out>
        weak_locations = <optimized out>
        nqueue = <optimized out>
        gaig_temp = <optimized out>
        _pp = <optimized out>
        _ptr = <optimized out>
        gaig_temp = <optimized out>
        gaig_temp = <optimized out>
        _g_boolean_var_144 = <optimized out>
        _g_boolean_var_145 = <optimized out>
#2  g_object_unref (_object=0x5555558d3500) at ../../../gobject/gobject.c:3805
        object = 0x5555558d3500
        old_ref = <optimized out>
        __func__ = "g_object_unref"
        retry_atomic_decrement1 = <optimized out>
        gaig_temp = <optimized out>
        weak_locations = <optimized out>
        nqueue = <optimized out>
        gaig_temp = <optimized out>
        _pp = <optimized out>
--Type <RET> for more, q to quit, c to continue without paging--c
        _ptr = <optimized out>
        gaig_temp = <optimized out>
        gaig_temp = <optimized out>
        _g_boolean_var_144 = <optimized out>
        _g_boolean_var_145 = <optimized out>
#3  0x00005555555a64f3 in liferea_shell_destroy ()
No symbol table info available.
#4  0x00005555555830af in ?? ()
No symbol table info available.
#5  0x00007ffff0d43540 in g_closure_invoke (closure=0x55555560e390, return_value=0x0, n_param_values=1, param_values=0x7fffffffd700, 
    invocation_hint=0x7fffffffd650) at ../../../gobject/gclosure.c:832
        marshal = 0x7ffff0d458e0 <g_cclosure_marshal_VOID__VOID>
        marshal_data = 0x0
        in_marshal = 0
        real_closure = 0x55555560e370
        __func__ = "g_closure_invoke"
#6  0x00007ffff0d56afc in signal_emit_unlocked_R (node=node@entry=0x7fffffffd7b0, detail=detail@entry=0, instance=instance@entry=0x55555560c120, 
    emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7fffffffd700) at ../../../gobject/gsignal.c:3980
        tmp = <optimized out>
        handler = 0x55555560e330
        accumulator = <optimized out>
        emission = {next = 0x0, instance = 0x55555560c120, ihint = {signal_id = 7, detail = 0, 
            run_type = (G_SIGNAL_RUN_FIRST | G_SIGNAL_ACCUMULATOR_FIRST_RUN)}, state = EMISSION_RUN, chain_type = 4}
        class_closure = <optimized out>
        hlist = <optimized out>
        handler_list = 0x55555560e330
        return_accu = <optimized out>
        accu = {g_type = 0, data = {{v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, 
              v_pointer = 0x0}, {v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, 
              v_pointer = 0x0}}}
        signal_id = <optimized out>
        max_sequential_handler_number = <optimized out>
        return_value_altered = <optimized out>
        n_params = <optimized out>
        EMIT_RESTART = <optimized out>
        __func__ = "signal_emit_unlocked_R"
#7  0x00007ffff0d58501 in signal_emit_valist_unlocked (instance=instance@entry=0x55555560c120, signal_id=signal_id@entry=7, detail=detail@entry=0, 
    var_args=var_args@entry=0x7fffffffd910) at ../../../gobject/gsignal.c:3612
        instance_and_params = 0x7fffffffd700
        param_values = 0x7fffffffd718
        node = <optimized out>
        i = <optimized out>
        __func__ = "signal_emit_valist_unlocked"
        node_copy = {signal_id = 7, itype = 93824992962400, name = 0x7ffff0f3a8f7 "shutdown", destroyed = 0, flags = 2, n_params = 0, 
          single_va_closure_is_valid = 1, single_va_closure_is_after = 1, param_types = 0x0, return_type = 4, class_closure_bsa = 0x5555556080e0, 
          accumulator = 0x0, c_marshaller = 0x7ffff0d458e0 <g_cclosure_marshal_VOID__VOID>, 
          va_marshaller = 0x7ffff0d45970 <g_cclosure_marshal_VOID__VOIDv>, emission_hooks = 0x0, single_va_closure = 0x5555556087c0}
#8  0x00007ffff0d5e186 in g_signal_emit_valist (instance=0x55555560c120, signal_id=7, detail=0, var_args=0x7fffffffd910)
    at ../../../gobject/gsignal.c:3355
No locals.
#9  0x00007ffff0d5e243 in g_signal_emit (instance=instance@entry=0x55555560c120, signal_id=<optimized out>, detail=detail@entry=0)
    at ../../../gobject/gsignal.c:3675
        var_args = {{gp_offset = 24, fp_offset = 48, overflow_arg_area = 0x7fffffffd9f0, reg_save_area = 0x7fffffffd930}}
#10 0x00007ffff0ecad92 in g_application_run (application=0x55555560c120, argc=<optimized out>, argv=<optimized out>)
    at ../../../gio/gapplication.c:2583
        arguments = 0x55555560e7d0
        status = 0
        context = 0x55555560e850
        acquired_context = <optimized out>
        __func__ = "g_application_run"
#11 0x00005555555836f6 in liferea_application_new ()
No symbol table info available.
#12 0x00007ffff094d6ca in __libc_start_call_main (main=main@entry=0x555555574530 <main>, argc=argc@entry=1, argv=argv@entry=0x7fffffffdb78)
    at ../sysdeps/nptl/libc_start_call_main.h:58
        self = <optimized out>
        result = <optimized out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140737488345976, -4568258250732863009, 0, 140737488345992, 93824992802928, 140737354125312, 
                4568258249810248159, 4568242642060837343}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x7fffffffdb78, 0x7fffffffdb78}, data = {
              prev = 0x0, cleanup = 0x0, canceltype = -9352}}}
        not_first_call = <optimized out>
#13 0x00007ffff094d785 in __libc_start_main_impl (main=0x555555574530 <main>, argc=1, argv=0x7fffffffdb78, init=<optimized out>, 
    fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffdb68) at ../csu/libc-start.c:360
No locals.
#14 0x00005555555745d1 in _start ()
No symbol table info available.
(gdb)
@lwindolf
Copy link
Owner

I'm trying to reproduce it with the interact script, but I run into the following issue:

  [...]
  sleeping for 0.500000
  sleeping for 0.500000
  sleeping for 0.500000
  sleeping for 0.500000
  sleeping for 0.500000
  sleeping for 0.500000
  sleeping for 0.500000
  Translation not found for "View"
  Warning: /home/lars/git/liferea/./interact:147: The requested widget could not be focused: child with name="View":
        main()
  
  Traceback (most recent call last):
    File "/home/lars/git/liferea/./interact", line 147, in <module>
      main()
    File "/home/lars/git/liferea/./interact", line 102, in main
      click('View')
    File "/usr/lib/python3/dist-packages/dogtail/procedural.py", line 364, in __call__
      Click.node.click(button)
      ^^^^^^^^^^^^^^^^
  AttributeError: 'NoneType' object has no attribute 'click'

Is this some locale effect?

Also I cannot reproduce it manually.

@paulgevers
Copy link
Contributor Author

paulgevers commented Apr 12, 2024

Sorry, yes, I had to work around some changes. Can you try with the latest version if you didn't use that already: https://salsa.debian.org/debian/liferea/-/blob/master/debian/tests/interact?ref_type=heads

Wait, in that script I work around the crash with the <Control>w lines so comment those out. (line 158, 159 and 160)

@lwindolf
Copy link
Owner

Thanks, that helped me overcome it. Now I'm running into negative coordinates on "Fullscreen" and after "Contents". Do you know why those happen?

Clicking on [menu | Help]
raw click on Help [menu | Help] at (593.5,229.5)
Mouse button 1 click at (593.5,229.5)
searching for descendent of [menu | Help]: child with name="Contents" (attempt 0)
Clicking on [menu item | Contents]
raw click on Contents [menu item | Contents] at (-2147483647.5,-2147483647.5)
Traceback (most recent call last):
  File "/home/lars/git/liferea/./interact", line 170, in <module>
    main()
  File "/home/lars/git/liferea/./interact", line 115, in main
    click('Contents')
  File "/usr/lib/python3/dist-packages/dogtail/procedural.py", line 364, in __call__
    Click.node.click(button)
  File "/usr/lib/python3/dist-packages/dogtail/tree.py", line 466, in click
    rawinput.click(clickX, clickY, button)
  File "/usr/lib/python3/dist-packages/dogtail/rawinput.py", line 38, in click
    checkCoordinates(x, y)
  File "/usr/lib/python3/dist-packages/dogtail/rawinput.py", line 30, in checkCoordinates
    raise ValueError("Attempting to generate a mouse event at negative coordinates: (%s,%s)" % (x, y))
ValueError: Attempting to generate a mouse event at negative coordinates: (-2147483647.5,-2147483647.5)

@paulgevers
Copy link
Contributor Author

Do you know why those happen?

No. What I noticed (but I assume you too) is that while the test is running you have to stop your work, as it's dogtail is really interacting with your environment and if you move focus and/or mouse position, things go wrong.

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

No branches or pull requests

2 participants