backscrub
backscrub copied to clipboard
Crash with animated/live backgrounds
Crash on experimental branch using animated/live backgrounds:
main [grab: 2806054 retr: 8208613 copy: 246660 prep: 4396040 mask: 11148906 post: 61 v4l2: 6063207 FPS: 30.42] ai: [wait: 22613512 prep: 1334692 tflt: 6603206 mask: 417547 FPS: 31.18]
(experimental-0-gabee2f87:172148): Gdk-CRITICAL **: 23:59:05.322: gdk_window_get_toplevel: assertion 'GDK_IS_WINDOW (window)' failed
Thread 16 "backscrub" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffa7fff700 (LWP 172168)]
0x00007ffff676e72d in ?? () from /usr/lib/x86_64-linux-gnu/libgdk-3.so.0
LEGEND: STACK | HEAP | CODE | DATA | RWX | RODATA
───────────────────────────────────────────────────────────────────────────────────────────────────────────────[ REGISTERS ]────────────────────────────────────────────────────────────────────────────────────────────────────────────────
RAX 0x0
RBX 0x7fffa7ffd240 ◂— 0x0
RCX 0x7fff9c000048 —▸ 0x7fff9c122e60 ◂— 0x80
RDX 0x0
RDI 0x7fff9c0008d6 ◂— 0x7000600050007
RSI 0x1
R8 0x7
R9 0x9a
R10 0x7fffa7ff9d40 —▸ 0x7fff9c0aa4b0 —▸ 0x7fff9c322d00 —▸ 0x7fff9c0bfef0 —▸ 0x7fff9c913cf0 ◂— ...
R11 0x0
R12 0x7fff9c323b40 ◂— 0x1
R13 0x7fff9c1e96d0 ◂— 0x1
R14 0x555555ee5de0 ◂— 0x555555ee5de0
R15 0x7fffa7ffd330 ◂— 0x7fff01010000
RBP 0x555555ee5de0 ◂— 0x555555ee5de0
RSP 0x7fffa7ffd210 ◂— 0x0
RIP 0x7ffff676e72d ◂— mov eax, dword ptr [rax + 0x100]
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────[ DISASM ]─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
► 0x7ffff676e72d mov eax, dword ptr [rax + 0x100]
0x7ffff676e733 test eax, eax
0x7ffff676e735 jne 0x7ffff676e723 <0x7ffff676e723>
↓
0x7ffff676e723 pop rbp
0x7ffff676e724 ret
0x7ffff676e725 nop dword ptr [rax]
0x7ffff676e728 call gdk_window_get_toplevel <gdk_window_get_toplevel>
0x7ffff676e72d mov eax, dword ptr [rax + 0x100]
0x7ffff676e733 test eax, eax
0x7ffff676e735 jne 0x7ffff676e723 <0x7ffff676e723>
0x7ffff676e737 mov rdi, rbp
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────[ STACK ]──────────────────────────────────────────────────────────────────────────────────────────────────────────────────
00:0000│ rsp 0x7fffa7ffd210 ◂— 0x0
01:0008│ 0x7fffa7ffd218 —▸ 0x7ffff676ea60 ◂— jmp 0x7ffff676e93d
02:0010│ 0x7fffa7ffd220 ◂— 0x3c0
03:0018│ 0x7fffa7ffd228 ◂— 0x0
... ↓
07:0038│ 0x7fffa7ffd248 ◂— 0xf000000140
───────────────────────────────────────────────────────────────────────────────────────────────────────────────[ BACKTRACE ]────────────────────────────────────────────────────────────────────────────────────────────────────────────────
► f 0 7ffff676e72d
f 1 7ffff676ea60
f 2 7ffff6bb224a gtk_widget_queue_draw_area+202
f 3 7ffff6bb989c gtk_widget_queue_draw+188
f 4 7ffff7f780ed
f 5 7ffff7f7a0f4 cvShowImage+132
f 6 7ffff7f72cfd
f 7 5555555a8adc read_thread(std::shared_ptr<background_t>)+1346
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
pwndbg> bt full
#0 0x00007ffff676e72d in () at /usr/lib/x86_64-linux-gnu/libgdk-3.so.0
#1 0x00007ffff676ea60 in () at /usr/lib/x86_64-linux-gnu/libgdk-3.so.0
#2 0x00007ffff6bb224a in gtk_widget_queue_draw_area () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#3 0x00007ffff6bb989c in gtk_widget_queue_draw () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#4 0x00007ffff7f780ed in () at /usr/lib/x86_64-linux-gnu/libopencv_highgui.so.4.2
#5 0x00007ffff7f7a0f4 in cvShowImage () at /usr/lib/x86_64-linux-gnu/libopencv_highgui.so.4.2
#6 0x00007ffff7f72cfd in cv::imshow(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::_InputArray const&) () at /usr/lib/x86_64-linux-gnu/libopencv_highgui.so.4.2
#7 0x00005555555a8adc in read_thread(std::shared_ptr<background_t>) ()
#8 0x00005555555ab06e in void std::__invoke_impl<void, void (*)(std::shared_ptr<background_t>), std::shared_ptr<background_t> >(std::__invoke_other, void (*&&)(std::shared_ptr<background_t>), std::shared_ptr<background_t>&&) ()
#9 0x00005555555aafac in std::__invoke_result<void (*)(std::shared_ptr<background_t>), std::shared_ptr<background_t> >::type std::__invoke<void (*)(std::shared_ptr<background_t>), std::shared_ptr<background_t> >(void (*&&)(std::shared_ptr<background_t>), std::shared_ptr<background_t>&&) ()
#10 0x00005555555aaf0b in void std::thread::_Invoker<std::tuple<void (*)(std::shared_ptr<background_t>), std::shared_ptr<background_t> > >::_M_invoke<0ul, 1ul>(std::_Index_tuple<0ul, 1ul>) ()
#11 0x00005555555aae9e in std::thread::_Invoker<std::tuple<void (*)(std::shared_ptr<background_t>), std::shared_ptr<background_t> > >::operator()() ()
#12 0x00005555555aae30 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (*)(std::shared_ptr<background_t>), std::shared_ptr<background_t> > > >::_M_run() ()
#13 0x00007ffff7425de4 in () at /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#14 0x00007ffff71cb609 in start_thread (arg=<optimized out>) at pthread_create.c:477
ret = <optimized out>
pd = <optimized out>
unwind_buf = {
cancel_jmp_buf = {{
jmp_buf = {140736011958016, -8222578280321195037, 140737488343726, 140737488343727, 140737488343728, 140736011950592, 8222666242538660835, 8222559887469503459},
mask_was_saved = 0
}},
priv = {
pad = {0x0, 0x0, 0x0, 0x0},
data = {
prev = 0x0,
cleanup = 0x0,
canceltype = 0
}
}
}
not_first_call = 0
#15 0x00007ffff70f2293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
Doesn't happen right away, but after some (random) delay …
Hopefully addressed by #122, let's leave this open for a while to check...
Latest build from experimental seems stable with the recently applied changes. No crashes seen so far with build experimental-0-g04bc4b3c (04bc4b3c).