Skip to content
This repository has been archived by the owner on Jan 23, 2023. It is now read-only.

Core dump when clicking on author of retweet #425

Closed
DireMunchkin opened this issue Feb 22, 2022 · 29 comments
Closed

Core dump when clicking on author of retweet #425

DireMunchkin opened this issue Feb 22, 2022 · 29 comments
Labels
info required This doesn't seem right or more details are required works for me Issues that we can't recreate

Comments

@DireMunchkin
Copy link

DireMunchkin commented Feb 22, 2022

Describe the bug
Cawbird will dump core and crash when you click on the author field of a retweet in a user's Tweet page.
This is perfectly reproducible for me and happens every time I do this.

To Reproduce
Steps to reproduce the behavior:

  1. Go to the Tweets flow of user A, i.e. by clicking on the author of a Tweet in your feed.
  2. Find a retweet of user B in user A's Tweets
  3. Click on user B's name in that Tweet.
    (Note that if you click on the tweet first and then the author it works as you'd expect and want.)

Expected behavior
I expect to go to user B's Tweets.

System details:

  • OS: Linux Mint 20.3
  • Version: 1.4.2
  • Package type: Official Ubuntu 20.04 amd64 deb from here

Additional context
Here is the output of running G_MESSAGES_DEBUG=cawbird cawbird, slightly censored as to not reveal my account / followed accounts.

output.txt

@IBBoard IBBoard added info required This doesn't seem right or more details are required works for me Issues that we can't recreate labels Feb 22, 2022
@IBBoard
Copy link
Owner

IBBoard commented Feb 22, 2022

I can't recreate that. It's working fine on openSUSE from the OBS builds.

Unfortunately the log doesn't say anything useful. It's just logging normal behaviour and not the error.

A few questions:

  1. Does it happen for every retweeted user from every timeline, or is it perfectly reproducible with one tweet in one timeline?
  2. Does it happen from the main timeline as well?
  3. Is there any other logging when it crashes? Or a crash dump?

@DireMunchkin
Copy link
Author

Hello, thanks for taking the time.

  1. It's with every retweeted user from every timeline - Occasionally it works as you'd expect but almost all the time Cawbird crashes when you do that.
  2. No, just from one user's timeline. And not from the single tweet screen either.
  3. Not as far as I know? I omitted one line of output after that but it's just my terminal:
    zsh: segmentation fault (core dumped) G_MESSAGES_DEBUG=cawbird cawbird

@IBBoard
Copy link
Owner

IBBoard commented Feb 23, 2022

The home timeline and the user timelines should be using the same widget, so it's weird that there's different behaviour.

Can you follow the instructions here and provide a stack trace from the coredump? It should tell me which function failed and some of the context.

@DireMunchkin
Copy link
Author

DireMunchkin commented Feb 28, 2022

Ok, I think I got what you wanted, but I had to follow this guide instead:

gdb `cat ExecutablePath` CoreDump
GNU gdb (Ubuntu 9.2-0ubuntu1~20.04.1) 9.2
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /usr/bin/cawbird...
Reading symbols from /usr/lib/debug/.build-id/be/8bcaa8b1b3bf6e84a3f2fcbd595df3e55de284.debug...
[New LWP 4883]
[New LWP 4885]
[New LWP 4884]
[New LWP 4886]
[New LWP 4921]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `cawbird'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x00007ff74a701514 in ?? () from /lib/x86_64-linux-gnu/libgtk-3.so.0
[Current thread is 1 (Thread 0x7ff7459ca440 (LWP 4883))]
(gdb) bt
#0  0x00007ff74a701514 in ?? () from /lib/x86_64-linux-gnu/libgtk-3.so.0
#1  0x00007ff74a7a29b7 in ?? () from /lib/x86_64-linux-gnu/libgtk-3.so.0
#2  0x00007ff74a7a810c in ?? () from /lib/x86_64-linux-gnu/libgtk-3.so.0
#3  0x00007ff74a95aae1 in ?? () from /lib/x86_64-linux-gnu/libgtk-3.so.0
#4  0x00007ff74a069a56 in ?? () from /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#5  0x00007ff74a088b48 in g_signal_emit_valist () from /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#6  0x00007ff74a0890f3 in g_signal_emit () from /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#7  0x00007ff74a771fcc in ?? () from /lib/x86_64-linux-gnu/libgtk-3.so.0
#8  0x00007ff74a06cc56 in g_cclosure_marshal_VOID__BOXEDv () from /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#9  0x00007ff74a069a56 in ?? () from /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#10 0x00007ff74a088b48 in g_signal_emit_valist () from /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#11 0x00007ff74a0890f3 in g_signal_emit () from /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#12 0x00007ff74a76f012 in ?? () from /lib/x86_64-linux-gnu/libgtk-3.so.0
#13 0x00007ff74a77065b in ?? () from /lib/x86_64-linux-gnu/libgtk-3.so.0
#14 0x00007ff74a773646 in ?? () from /lib/x86_64-linux-gnu/libgtk-3.so.0
#15 0x00007ff74a73abb0 in gtk_event_controller_handle_event () from /lib/x86_64-linux-gnu/libgtk-3.so.0
#16 0x00007ff74a8fd16d in ?? () from /lib/x86_64-linux-gnu/libgtk-3.so.0
#17 0x00007ff74a9545ef in ?? () from /lib/x86_64-linux-gnu/libgtk-3.so.0
#18 0x00007ff74a069a56 in ?? () from /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#19 0x00007ff74a087df1 in g_signal_emit_valist () from /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#20 0x00007ff74a0890f3 in g_signal_emit () from /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#21 0x00007ff74a8fec23 in ?? () from /lib/x86_64-linux-gnu/libgtk-3.so.0
#22 0x00007ff74a7ba128 in ?? () from /lib/x86_64-linux-gnu/libgtk-3.so.0
#23 0x00007ff74a7bc3db in gtk_main_do_event () from /lib/x86_64-linux-gnu/libgtk-3.so.0
#24 0x00007ff74a4a4f79 in ?? () from /lib/x86_64-linux-gnu/libgdk-3.so.0
#25 0x00007ff74a4d8106 in ?? () from /lib/x86_64-linux-gnu/libgdk-3.so.0
#26 0x00007ff74ad7017d in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#27 0x00007ff74ad70400 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#28 0x00007ff74ad704a3 in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#29 0x00007ff74a197fe5 in g_application_run () from /lib/x86_64-linux-gnu/libgio-2.0.so.0
#30 0x00005630ac9851a9 in _vala_main (args=<optimized out>, args_length1=<optimized out>) at cawbird@exe/src/main.c:69
#31 0x00007ff7498790b3 in __libc_start_main (main=0x5630ac985000 <main>, argc=1, argv=0x7ffcdb164678, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7ffcdb164668) at ../csu/libc-start.c:308
#32 0x00005630ac98504e in _start () at cawbird@exe/src/main.c:79
(gdb) quit

Does that help you at all? I don't have a lot of C experience.

@IBBoard
Copy link
Owner

IBBoard commented Feb 28, 2022

Okay, so Ubuntu has an awkward way of generating tracebacks! In openSUSE I just do coredumpctl debug -1 to get the last dump. But thanks for working it out 🙂

Unfortunately, that's pretty much all in GTK and GObject, which are libraries that we use rather than our code, so it's not helpful in working out what's going on. And unfortunately it's showing line numbers for main.c, which is transpiled from Vala, so I can't even tell what it's doing there (but it's not likely to be helpful because that code basically starts things and not much more).

I think I've seen another stack trace that was dumping out in the wrong place, though, so I'll see what else I can work out.

@DireMunchkin
Copy link
Author

No problem! Let me know if there's anything else I can try that'd help narrow down the issue.

@IBBoard
Copy link
Owner

IBBoard commented Feb 28, 2022

Based on other users's feedback then you might need the cawbird-dbg package to give gdb more debug objects to work with.

@DireMunchkin
Copy link
Author

Sadly I already installed cawbird-dbg, the only change to the trace was near the bottom of the trace in main.c.

@IBBoard
Copy link
Owner

IBBoard commented Feb 28, 2022

Okay, thanks. I'll have to poke a bit more and work out how to get more backtraces out of gdb. I'm not that familiar with C and gdb (I'm a Perl/PHP/Java/C#/Python developer by progress over 20 years!) but I think I've had multiple threads visible in gdb before and had to enable the right one to get "the place where it crashed" rather than "the other place that errored out because the crash was occurring".

@DireMunchkin
Copy link
Author

Aha, right, now that I looked again at the dump it actually has 5 threads, I'll post the backtrace for all:

gdb `cat ExecutablePath` CoreDump
GNU gdb (Ubuntu 9.2-0ubuntu1~20.04.1) 9.2
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /usr/bin/cawbird...
Reading symbols from /usr/lib/debug/.build-id/be/8bcaa8b1b3bf6e84a3f2fcbd595df3e55de284.debug...
[New LWP 14471]
[New LWP 14472]
[New LWP 14473]
[New LWP 14474]
[New LWP 14499]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `cawbird'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x000000000000000d in ?? ()
[Current thread is 1 (Thread 0x7f762a55f440 (LWP 14471))]
(gdb) bt
#0  0x000000000000000d in ?? ()
#1  0x00007f762f2967c9 in ?? () from /lib/x86_64-linux-gnu/libgtk-3.so.0
#2  0x00007f762f296cfd in ?? () from /lib/x86_64-linux-gnu/libgtk-3.so.0
#3  0x00007f762f3379cb in ?? () from /lib/x86_64-linux-gnu/libgtk-3.so.0
#4  0x00007f762f33d10c in ?? () from /lib/x86_64-linux-gnu/libgtk-3.so.0
#5  0x00007f762f4efae1 in ?? () from /lib/x86_64-linux-gnu/libgtk-3.so.0
#6  0x00007f762ebfea56 in ?? () from /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#7  0x00007f762ec1db48 in g_signal_emit_valist () from /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#8  0x00007f762ec1e0f3 in g_signal_emit () from /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#9  0x00007f762f306fcc in ?? () from /lib/x86_64-linux-gnu/libgtk-3.so.0
#10 0x00007f762ec01c56 in g_cclosure_marshal_VOID__BOXEDv () from /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#11 0x00007f762ebfea56 in ?? () from /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#12 0x00007f762ec1db48 in g_signal_emit_valist () from /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#13 0x00007f762ec1e0f3 in g_signal_emit () from /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#14 0x00007f762f304012 in ?? () from /lib/x86_64-linux-gnu/libgtk-3.so.0
#15 0x00007f762f30565b in ?? () from /lib/x86_64-linux-gnu/libgtk-3.so.0
#16 0x00007f762f308646 in ?? () from /lib/x86_64-linux-gnu/libgtk-3.so.0
#17 0x00007f762f2cfbb0 in gtk_event_controller_handle_event () from /lib/x86_64-linux-gnu/libgtk-3.so.0
#18 0x00007f762f49216d in ?? () from /lib/x86_64-linux-gnu/libgtk-3.so.0
#19 0x00007f762f4e95ef in ?? () from /lib/x86_64-linux-gnu/libgtk-3.so.0
#20 0x00007f762ebfea56 in ?? () from /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#21 0x00007f762ec1cdf1 in g_signal_emit_valist () from /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#22 0x00007f762ec1e0f3 in g_signal_emit () from /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#23 0x00007f762f493c23 in ?? () from /lib/x86_64-linux-gnu/libgtk-3.so.0
#24 0x00007f762f34f128 in ?? () from /lib/x86_64-linux-gnu/libgtk-3.so.0
#25 0x00007f762f3513db in gtk_main_do_event () from /lib/x86_64-linux-gnu/libgtk-3.so.0
#26 0x00007f762f039f79 in ?? () from /lib/x86_64-linux-gnu/libgdk-3.so.0
#27 0x00007f762f06d106 in ?? () from /lib/x86_64-linux-gnu/libgdk-3.so.0
#28 0x00007f762f90517d in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#29 0x00007f762f905400 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#30 0x00007f762f9054a3 in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#31 0x00007f762ed2cfe5 in g_application_run () from /lib/x86_64-linux-gnu/libgio-2.0.so.0
#32 0x00005647717881a9 in _vala_main (args=<optimized out>, args_length1=<optimized out>) at cawbird@exe/src/main.c:69
#33 0x00007f762e40e0b3 in __libc_start_main (main=0x564771788000 <main>, argc=1, argv=0x7ffc02eb6568, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7ffc02eb6558) at ../csu/libc-start.c:308
#34 0x000056477178804e in _start () at cawbird@exe/src/main.c:79
(gdb) threads
Undefined command: "threads".  Try "help".
(gdb) info threads
  Id   Target Id                         Frame 
* 1    Thread 0x7f762a55f440 (LWP 14471) 0x000000000000000d in ?? ()
  2    Thread 0x7f7629cc2700 (LWP 14472) 0x00007f762e4fcaff in __GI___poll (fds=0x5647723839a0, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
  3    Thread 0x7f76294c1700 (LWP 14473) 0x00007f762e4fcaff in __GI___poll (fds=0x56477214df70, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
  4    Thread 0x7f7628cc0700 (LWP 14474) 0x00007f762e4fcaff in __GI___poll (fds=0x7f7620008fe0, nfds=3, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
  5    Thread 0x7f761aa5d700 (LWP 14499) syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
(gdb) thread 2
[Switching to thread 2 (Thread 0x7f7629cc2700 (LWP 14472))]
#0  0x00007f762e4fcaff in __GI___poll (fds=0x5647723839a0, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
29	../sysdeps/unix/sysv/linux/poll.c: No such file or directory.
(gdb) bt
#0  0x00007f762e4fcaff in __GI___poll (fds=0x5647723839a0, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007f762f90536e in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007f762f9054a3 in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007f762f9054f1 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#4  0x00007f762f92ead1 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#5  0x00007f762e35a609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#6  0x00007f762e509293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
(gdb) thread 3
[Switching to thread 3 (Thread 0x7f76294c1700 (LWP 14473))]
#0  0x00007f762e4fcaff in __GI___poll (fds=0x56477214df70, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
29	in ../sysdeps/unix/sysv/linux/poll.c
(gdb) bt
#0  0x00007f762e4fcaff in __GI___poll (fds=0x56477214df70, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007f762f90536e in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007f762f9054a3 in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007f762f9ea99d in ?? () from /usr/lib/x86_64-linux-gnu/gio/modules/libdconfsettings.so
#4  0x00007f762f92ead1 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#5  0x00007f762e35a609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#6  0x00007f762e509293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
(gdb) thread 4
[Switching to thread 4 (Thread 0x7f7628cc0700 (LWP 14474))]
#0  0x00007f762e4fcaff in __GI___poll (fds=0x7f7620008fe0, nfds=3, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
29	in ../sysdeps/unix/sysv/linux/poll.c
(gdb) bt
#0  0x00007f762e4fcaff in __GI___poll (fds=0x7f7620008fe0, nfds=3, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007f762f90536e in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007f762f9056f3 in g_main_loop_run () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007f762ed68f8a in ?? () from /lib/x86_64-linux-gnu/libgio-2.0.so.0
#4  0x00007f762f92ead1 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#5  0x00007f762e35a609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#6  0x00007f762e509293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
(gdb) thread 5
[Switching to thread 5 (Thread 0x7f761aa5d700 (LWP 14499))]
#0  syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
38	../sysdeps/unix/sysv/linux/x86_64/syscall.S: No such file or directory.
(gdb) bt
#0  syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
#1  0x00007f762f952746 in g_cond_wait_until () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007f762f8d5581 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007f762f8d5ba6 in g_async_queue_timeout_pop () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#4  0x00007f762f92f419 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#5  0x00007f762f92ead1 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#6  0x00007f762e35a609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#7  0x00007f762e509293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

@IBBoard
Copy link
Owner

IBBoard commented Feb 28, 2022

Normally gdb is helpful (in my experience) and reports the "right" one where the error happened. But I have found that it occasionally gives the first thread when the crash elsewhere.

And unfortunately, all of the other threads appear to be in library code as well. Which means something went REALLY wrong. We must have corrupted an object that we pass to GTK. We handle it fine because we don't touch the broken part, but GTK then tries to use it and explodes with a segfault.

If I make a new build that has more logging around the username links, could you swap to cawbird-unstable and test it again? It might take a few days, but that's part of what the "unstable" branch is for 🙂

("unstable" packages)

@DireMunchkin
Copy link
Author

Yeah sure, I can do that. Let me know when there's something I can test.

@IBBoard
Copy link
Owner

IBBoard commented Mar 2, 2022

I've just started to add the logging and found that we already log an "Activating " line. Checking your log, I can now see that there's a (cawbird:21903): cawbird-DEBUG: 16:00:36.655: TweetUtils.vala:890: Activating '@foo' line and a TweetUtils.vala:890: Activating 'foo' line, then a fetch of the user's timeline.

Looks like the cause isn't the link opening, but the subsequent profile loading.

How soon after opening the user's timeline do you click on the RT? Does it still happen if you leave it a few seconds so that all network activity is completed?

I'll still add some more debugging, but it's just that my immediate thought is that we're not handling interrupted connections very well.

@IBBoard
Copy link
Owner

IBBoard commented Mar 2, 2022

Some new cawbird-unstable packages are building with a heap of extra logging. Hopefully that'll help to track it down a bit 🙂

@DireMunchkin
Copy link
Author

Ok, I tried this again, I got the attached log and core dump.
cawbird-dbg.txt
cawbird-dump.txt

Just speculating here but it looks like the avatar of the user I'm visiting before it crashes is removed from cache. Is it possible it's some kind of use-after-free bug on the avatar picture, and that's what making it segfault?

@IBBoard
Copy link
Owner

IBBoard commented Mar 3, 2022

Maybe. It does seem odd that we're un-caching the avatar just before using it! I'll try to add some more logging as well.

It concerns me slightly that there's three instances of g_signal_emit in the call stack in the dump. I don't know whether that's normal and what might fire a signal (event) that triggers a signal that triggers a signal. Unfortunately, I suspect lots of variables will just show <optimized out>. It's worth a try, though.

In the gdb session, can you run the following sequence of commands:

thread 1
frame 7
info locals
info args
frame 8
info locals
info args
frame 13
info locals
info args
frame 22
info locals
info args

(Or whatever frames the g_signal_emit calls are on, plus one g_signal_emit_valist to see how they differ)

@DireMunchkin
Copy link
Author

I tried it, but gdb just says No symbol table info available. for both commands, every frame after it leaves your code.

@IBBoard
Copy link
Owner

IBBoard commented Mar 3, 2022

Yeah, not entirely unexpected. It's probably not got the debug symbols that give it enough information (because that also slows it down when it runs)

@IBBoard
Copy link
Owner

IBBoard commented Mar 3, 2022

I've added more logging and the packages should be building now. It's going to get even noisier in the logs 😁 Hopefully it helps!

@DireMunchkin
Copy link
Author

This is the tail end of the log from cawbird-unstable. Sadly I can't post the entire thing as it contains too much personal info to edit out.

(cawbird:43966): cawbird-DEBUG: 00:00:29.789: Parsing JSON
(cawbird:43966): cawbird-DEBUG: 00:00:29.794: Checking JSON root
(cawbird:43966): cawbird-DEBUG: 00:00:29.794: Returning reference to JSON
(cawbird:43966): cawbird-DEBUG: 00:00:29.794: UserUtils.vala:272: Got 10 tweets
(cawbird:43966): cawbird-DEBUG: 00:00:29.794: ProfilePage.vala:501: Got user tweets
(cawbird:43966): cawbird-DEBUG: 00:00:29.794: TweetUtils.vala:959: Working array of 10 tweets
(cawbird:43966): cawbird-DEBUG: 00:00:29.794: TweetUtils.vala:970: Seen user 1
(cawbird:43966): cawbird-DEBUG: 00:00:29.794: TweetUtils.vala:973: Seen RT user 2
(cawbird:43966): cawbird-DEBUG: 00:00:29.794: TweetUtils.vala:977: Setting hidden flags
(cawbird:43966): cawbird-DEBUG: 00:00:29.794: TweetUtils.vala:981: Added tweet
(cawbird:43966): cawbird-DEBUG: 00:00:29.794: TweetUtils.vala:970: Seen user 1
(cawbird:43966): cawbird-DEBUG: 00:00:29.794: TweetUtils.vala:973: Seen RT user 3
(cawbird:43966): cawbird-DEBUG: 00:00:29.794: TweetUtils.vala:977: Setting hidden flags
(cawbird:43966): cawbird-DEBUG: 00:00:29.794: TweetUtils.vala:981: Added tweet
(cawbird:43966): cawbird-DEBUG: 00:00:29.794: TweetUtils.vala:970: Seen user 1
(cawbird:43966): cawbird-DEBUG: 00:00:29.794: TweetUtils.vala:973: Seen RT user 5
(cawbird:43966): cawbird-DEBUG: 00:00:29.794: TweetUtils.vala:977: Setting hidden flags
(cawbird:43966): cawbird-DEBUG: 00:00:29.794: TweetUtils.vala:981: Added tweet
(cawbird:43966): cawbird-DEBUG: 00:00:29.795: TweetUtils.vala:970: Seen user 1
(cawbird:43966): cawbird-DEBUG: 00:00:29.795: TweetUtils.vala:977: Setting hidden flags
(cawbird:43966): cawbird-DEBUG: 00:00:29.795: TweetUtils.vala:981: Added tweet
(cawbird:43966): cawbird-DEBUG: 00:00:29.795: TweetUtils.vala:970: Seen user 1
(cawbird:43966): cawbird-DEBUG: 00:00:29.795: TweetUtils.vala:977: Setting hidden flags
(cawbird:43966): cawbird-DEBUG: 00:00:29.795: TweetUtils.vala:981: Added tweet
(cawbird:43966): cawbird-DEBUG: 00:00:29.795: TweetUtils.vala:970: Seen user 1
(cawbird:43966): cawbird-DEBUG: 00:00:29.795: TweetUtils.vala:973: Seen RT user 4
(cawbird:43966): cawbird-DEBUG: 00:00:29.795: TweetUtils.vala:977: Setting hidden flags
(cawbird:43966): cawbird-DEBUG: 00:00:29.795: TweetUtils.vala:981: Added tweet
(cawbird:43966): cawbird-DEBUG: 00:00:29.795: TweetUtils.vala:970: Seen user 1
(cawbird:43966): cawbird-DEBUG: 00:00:29.795: TweetUtils.vala:977: Setting hidden flags
(cawbird:43966): cawbird-DEBUG: 00:00:29.795: TweetUtils.vala:981: Added tweet
(cawbird:43966): cawbird-DEBUG: 00:00:29.795: TweetUtils.vala:970: Seen user 1
(cawbird:43966): cawbird-DEBUG: 00:00:29.795: TweetUtils.vala:977: Setting hidden flags
(cawbird:43966): cawbird-DEBUG: 00:00:29.795: TweetUtils.vala:981: Added tweet
(cawbird:43966): cawbird-DEBUG: 00:00:29.795: TweetUtils.vala:970: Seen user 1
(cawbird:43966): cawbird-DEBUG: 00:00:29.795: TweetUtils.vala:977: Setting hidden flags
(cawbird:43966): cawbird-DEBUG: 00:00:29.795: TweetUtils.vala:981: Added tweet
(cawbird:43966): cawbird-DEBUG: 00:00:29.795: TweetUtils.vala:970: Seen user 1
(cawbird:43966): cawbird-DEBUG: 00:00:29.795: TweetUtils.vala:977: Setting hidden flags
(cawbird:43966): cawbird-DEBUG: 00:00:29.795: TweetUtils.vala:981: Added tweet
(cawbird:43966): cawbird-DEBUG: 00:00:29.795: TweetUtils.vala:983: Worked array
(cawbird:43966): cawbird-DEBUG: 00:00:31.895: TweetListEntry.vala:527: Link activated: @3/@username1
(cawbird:43966): cawbird-DEBUG: 00:00:31.895: TweetListEntry.vala:533: Grabbed focus
(cawbird:43966): cawbird-DEBUG: 00:00:31.895: TweetUtils.vala:890: Activating '@3/@username1'
(cawbird:43966): cawbird-DEBUG: 00:00:31.912: AvatarWidget.vala:54: Setting avatar surface
(cawbird:43966): cawbird-DEBUG: 00:00:31.912: AvatarWidget.vala:71: Queuing draw
(cawbird:43966): cawbird-DEBUG: 00:00:31.913: Creating task with user data at 0x7ffc1408d420 and callback 0x7ffc1408d428
(cawbird:43966): cawbird-DEBUG: 00:00:31.913: REST: GET 1.1/friendships/show.json
(cawbird:43966): cawbird-DEBUG: 00:00:31.913: Creating task with user data at 0x7ffc1408d440 and callback 0x7ffc1408d448
(cawbird:43966): cawbird-DEBUG: 00:00:31.913: REST: GET 1.1/users/show.json
(cawbird:43966): cawbird-DEBUG: 00:00:31.913: AvatarWidget.vala:133: Disposing of avatar
(cawbird:43966): cawbird-DEBUG: 00:00:31.913: Removing avatar with id 2 from cache
(cawbird:43966): cawbird-DEBUG: 00:00:31.913: Removed avatar with id 4 from cache
(cawbird:43966): cawbird-DEBUG: 00:00:31.914: AvatarWidget.vala:133: Disposing of avatar
(cawbird:43966): cawbird-DEBUG: 00:00:31.915: AvatarWidget.vala:133: Disposing of avatar
(cawbird:43966): cawbird-DEBUG: 00:00:31.916: AvatarWidget.vala:133: Disposing of avatar
(cawbird:43966): cawbird-DEBUG: 00:00:31.916: AvatarWidget.vala:133: Disposing of avatar
(cawbird:43966): cawbird-DEBUG: 00:00:31.917: AvatarWidget.vala:133: Disposing of avatar
(cawbird:43966): cawbird-DEBUG: 00:00:31.917: Removing avatar with id 4 from cache
(cawbird:43966): cawbird-DEBUG: 00:00:31.917: Removed avatar with id 4 from cache
(cawbird:43966): cawbird-DEBUG: 00:00:31.917: AvatarWidget.vala:133: Disposing of avatar
(cawbird:43966): cawbird-DEBUG: 00:00:31.918: AvatarWidget.vala:133: Disposing of avatar
(cawbird:43966): cawbird-DEBUG: 00:00:31.919: AvatarWidget.vala:133: Disposing of avatar
(cawbird:43966): cawbird-DEBUG: 00:00:31.919: AvatarWidget.vala:133: Disposing of avatar
(cawbird:43966): cawbird-DEBUG: 00:00:31.919: ProfilePage.vala:494: Getting user tweets
(cawbird:43966): cawbird-DEBUG: 00:00:31.919: UserUtils.vala:249: Loading user timeline user_id=3 since ID -1 to -1
(cawbird:43966): cawbird-DEBUG: 00:00:31.919: Creating task with user data at 0x7ffc1408d410 and callback 0x7ffc1408d418
(cawbird:43966): cawbird-DEBUG: 00:00:31.919: REST: GET 1.1/statuses/user_timeline.json

@DireMunchkin
Copy link
Author

DireMunchkin commented Mar 6, 2022

I should also add that I updated to the latest cawbird-unstable after that and now I get this crash error on startup.
(cawbird:22427): cawbird-ERROR **: 16:04:16.735: Twitter.vala:71: Error while loading assets: Unrecognized image file format

@IBBoard
Copy link
Owner

IBBoard commented Mar 6, 2022

Ah. My patch for the "withheld accounts" has broken it. That'll probably be because I added an image, and they're not included in patch files 😑

I'm going to have to compare those logs to the code a bit more over this week. The next line after the last log message is a call to librest and then it should return to a callback that starts with logging "REST call returned".

There must be something that's it's doing that's odd. I suspect it's going to be some bizarre corner case where the C code screws up the memory, and I have no idea why Baedert decided to move perfectly good, memory-managed Vala code to C.

@IBBoard
Copy link
Owner

IBBoard commented Mar 16, 2022

I wonder whether there's anything specific and "unusual"* about the accounts that you're looking at. Does it happen when you look at RTs on my account? I'm wondering whether there might be accents or emoji or something that we're not handling correctly that's corrupting data that's making it fail, and that's why I don't see it.

  • I know accents aren't unusual and that's a very American/English-centric view, but Unicode can be surprisingly complex and it can be easy to break things when trying to handle it 🙂

@schmittlauch
Copy link
Contributor

Adding another data point: I also cannot reproduce the crash in my NixOS build from commit b11138f.

@DireMunchkin
Copy link
Author

@IBBoard Yup, I can click SwiftOnSecurity in this tweet and it crashes as previously.

@IBBoard
Copy link
Owner

IBBoard commented Mar 17, 2022

Okay, so we can rule out bad Unicode (non-ASCII or emoji) handling.

@DireMunchkin
Copy link
Author

DireMunchkin commented Apr 9, 2022

Hello! I noticed this issue #448 which I also have. I installed the flatpak of cawbird and I can't reproduce the core dump issue there! Also embedded video now works.
This pretty strongly suggest to me that there's a packaging / dependency issue, perhaps GStreamer?

@IBBoard
Copy link
Owner

IBBoard commented Apr 9, 2022

Thanks for the extra info. I'd be surprised if it is a GStreamer issue, as clicking an author profile link shouldn't interact with GStreamer. But there could be something odd in the Ubuntu packaging.

@DireMunchkin
Copy link
Author

Closing this issue as I've stopped using cawbird and I'm not driving debugging it.

@DireMunchkin DireMunchkin closed this as not planned Won't fix, can't repro, duplicate, stale Jul 10, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
info required This doesn't seem right or more details are required works for me Issues that we can't recreate
Projects
None yet
Development

No branches or pull requests

3 participants