Dear Maintainer, I tried to have a look at this issue and could reproduce it in a buster amd64 qemu VM. But this is also observable with current Bullseye/testing.
This seems to be based on the fact that all xfce4-terminal windows are owned by the same parent process. I could observe if a second terminal window is closed by the "X" in the window decoration then the xfce4-terminal process does not receive a SIGCHLD for the bash process running inside that window. Therefore dispatch_unix_signals/waitpid is not executed which causes the defunct process. Further I think the issue lies inside libutempter0 which is forking off a helper program and therefore temporarily changes signal handling for SIGCHLD to SIG_DFL, and therefore the signal seems to be lost. [1] Attached patch tries to receive all SIGCHLD signals and resend the unexpected ones after the original signal handler is active again. But it operates on a single static variable, is therefore not thread safe, if it needs to be? Kind regards, Bernhard [1] http://git.altlinux.org/people/ldv/packages/?p=libutempter.git;a=blob;f=libutempter/iface.c;hb=HEAD#l84
# Buster amd64 qemu VM 2020-08-22 apt update apt dist-upgrade apt install systemd-coredump xfce4 xterm xfce4-terminal psmisc mc colordiff fakeroot quilt git python3-pexpect gdb xfce4-terminal-dbgsym libvte-2.91-0-dbgsym libglib2.0-0-dbgsym libutempter0-dbgsym apt build-dep xfce4-terminal apt build-dep rr reboot echo 1 > /proc/sys/kernel/perf_event_paranoid mkdir /home/benutzer/source/xfce4-terminal/orig -p cd /home/benutzer/source/xfce4-terminal/orig apt source xfce4-terminal cd mkdir /home/benutzer/source/libvte-2.91-0/orig -p cd /home/benutzer/source/libvte-2.91-0/orig apt source libvte-2.91-0 cd mkdir /home/benutzer/source/libglib2.0-0/orig -p cd /home/benutzer/source/libglib2.0-0/orig apt source libglib2.0-0 cd mkdir /home/benutzer/source/libutempter0/orig -p cd /home/benutzer/source/libutempter0/orig apt source libutempter0 cd mkdir /home/benutzer/source/rr/git -p cd /home/benutzer/source/rr/git git clone https://github.com/mozilla/rr.git cd cd /home/benutzer/source/rr/git/ mkdir obj && cd obj cmake ../rr make -j4 ######### export DISPLAY=:0 export SESSION_MANAGER=$(cat /proc/647/environ | tr '\0' '\12' | grep SESSION_MANAGER | sed 's/SESSION_MANAGER=//g') /home/benutzer/source/rr/git/obj/bin/rr /usr/bin/xfce4-terminal # Started one terminal benutzer@debian:~$ pstree -p | grep xfce4-terminal -A3 | |-sshd(29466)---sshd(29472)---bash(29473)---rr(29618)-+-xfce4-terminal(29626)-+-bash(29630) | | | |-{xfce4-terminal}(29627) | | | `-{xfce4-terminal}(29628) # Started second terminal window with one tab benutzer@debian:~$ pstree -p | grep xfce4-terminal -A3 | |-sshd(29466)---sshd(29472)---bash(29473)---rr(29618)-+-xfce4-terminal(29626)-+-bash(29630) | | | |-bash(29653) | | | |-{xfce4-terminal}(29627) | | | |-{xfce4-terminal}(29628) | | | `-{xfce4-terminal}(29652) # enter 'exit' in the second window benutzer@debian:~$ ps aux | grep defunct | grep -v "grep defunct" benutzer@debian:~$ -> does not show the problem # Started third terminal window with one tab benutzer@debian:~$ pstree -p | grep xfce4-terminal -A3 | |-sshd(29466)---sshd(29472)---bash(29473)---rr(29618)-+-xfce4-terminal(29626)-+-bash(29630) | | | |-bash(29671) | | | |-{xfce4-terminal}(29627) | | | |-{xfce4-terminal}(29628) | | | `-{xfce4-terminal}(29670) # exit by pressing X in the window decoration benutzer@debian:~$ ps aux | grep defunct | grep -v "grep defunct" benutzer 29671 0.0 0.0 0 0 ? Zs 16:49 0:00 [bash] <defunct> benutzer@debian:~$ pstree -p | grep xfce4-terminal -A3 | |-sshd(29466)---sshd(29472)---bash(29473)---rr(29618)-+-xfce4-terminal(29626)-+-bash(29630) | | | |-bash(29671) | | | |-{xfce4-terminal}(29627) | | | `-{xfce4-terminal}(29628) -> here is the issue visible # enter 'exit' in the first window # Recording ended: rr: Saving execution to trace directory `/home/benutzer/.local/share/rr/xfce4-terminal-2'. ################ benutzer@debian:~$ /home/benutzer/source/rr/git/obj/bin/rr ps /home/benutzer/.local/share/rr/xfce4-terminal-2 PID PPID EXIT CMD 29626 -- 0 /usr/bin/xfce4-terminal 29630 29626 0 bash 29633 29630 0 dircolors -b 29653 29626 0 bash 29656 29653 0 dircolors -b 29671 29626 -1 bash 29674 29671 0 dircolors -b 29679 29626 1 /usr/lib/x86_64-linux-gnu/utempter/utempter del ############## /home/benutzer/source/rr/git/obj/bin/rr replay -p 29630 /home/benutzer/.local/share/rr/xfce4-terminal-2 ... 0x00007f79019e4090 in _start () from /lib64/ld-linux-x86-64.so.2 (rr) when Current event: 3684 (rr) cont Continuing. Program received signal SIGKILL, Killed. 0x0000000070000002 in ?? () (rr) when Current event: 8998 /home/benutzer/source/rr/git/obj/bin/rr replay -p 29671 /home/benutzer/.local/share/rr/xfce4-terminal-2 ... (rr) b main Breakpoint 1 at 0x558299ee5e30 (rr) cont Continuing. Breakpoint 1, 0x0000558299ee5e30 in main () (rr) when Current event: 7182 (rr) cont Continuing. Program received signal SIGHUP, Hangup. 0x0000000070000002 in ?? () (rr) when Current event: 8168 (rr) cont Continuing. Program received signal SIGHUP, Hangup. 0x0000000070000002 in ?? () (rr) when Current event: 8195 (rr) cont Continuing. Program received signal SIGHUP, Hangup. 0x0000000070000002 in ?? () (rr) when Current event: 8274 (rr) cont Continuing. Program received signal SIGKILL, Killed. 0x0000000070000002 in ?? () (rr) when Current event: 8276 ############## /home/benutzer/source/rr/git/obj/bin/rr replay -p 29626 /home/benutzer/.local/share/rr/xfce4-terminal-2 directory /home/benutzer/source/libglib2.0-0/orig/glib2.0-2.58.3/gio/tests/de directory /home/benutzer/source/libvte-2.91-0/orig/vte2.91-0.54.2/src/vte directory /home/benutzer/source/xfce4-terminal/orig/xfce4-terminal-0.8.7.4/terminal directory /home/benutzer/source/libutempter0/orig/libutempter-1.1.6 set width 0 set pagination off b fork b waitpid b sigaction y cont # Installation of signal handler for SIGCHLD (rr) bt #0 0x00007f1d41d35910 in __sigaction (sig=sig@entry=17, act=act@entry=0x7ffd9f656310, oact=oact@entry=0x0) at ../nptl/sigaction.c:24 #1 0x00007f1d41f960fe in ref_unix_signal_handler_unlocked (signum=17) at ../../../glib/gmain.c:5236 #2 0x00007f1d41f960fe in ref_unix_signal_handler_unlocked (signum=17) at ../../../glib/gmain.c:5221 #3 0x00007f1d41f9631c in g_child_watch_source_new (pid=29630) at ../../../glib/gmain.c:5471 #4 0x00007f1d41f963b8 in g_child_watch_add_full (priority=priority@entry=300, pid=pid@entry=29630, function=function@entry=0x7f1d43031a10 <vte_reaper_child_watch_cb(GPid, int, gpointer)>, data=0x55f2eacb5400, notify=0x7f1d4228cc80 <g_object_unref>) at ../../../glib/gmain.c:5535 #5 0x00007f1d43031c62 in vte_reaper_add_child(int) (pid=pid@entry=29630) at ../../src/reaper.cc:143 #6 0x00007f1d43039284 in vte::terminal::Terminal::watch_child(int) (this=0x55f2eae74000, child_pid=29630) at ../../src/vte.cc:3217 #7 0x00007f1d4305834c in spawn_async_cb(GObject*, GAsyncResult*, gpointer) (source=<optimized out>, result=<optimized out>, user_data=user_data@entry=0x55f2eb00ebe0) at ../../src/vtegtk.cc:2594 #8 0x00007f1d4236d799 in g_task_return_now (task=0x55f2eae62ea0 [GTask]) at ../../../gio/gtask.c:1148 #9 0x00007f1d4236d7d9 in complete_in_idle_cb (task=0x55f2eae62ea0) at ../../../gio/gtask.c:1162 #10 0x00007f1d41f94dd8 in g_main_dispatch (context=0x55f2eaaf75a0) at ../../../glib/gmain.c:3182 #11 0x00007f1d41f94dd8 in g_main_context_dispatch (context=context@entry=0x55f2eaaf75a0) at ../../../glib/gmain.c:3847 #12 0x00007f1d41f951c8 in g_main_context_iterate (context=0x55f2eaaf75a0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../../../glib/gmain.c:3920 #13 0x00007f1d41f954c2 in g_main_loop_run (loop=0x55f2eaacc1d0) at ../../../glib/gmain.c:4116 #14 0x00007f1d42953b15 in gtk_main () at /lib/x86_64-linux-gnu/libgtk-3.so.0 #15 0x000055f2e9db90d2 in main (argc=<optimized out>, argv=<optimized out>) at main.c:348 (rr) when Current event: 4479 # Creation of PID 29653 (rr) bt #0 0x00007f1d41c28770 in __libc_fork () at ../sysdeps/nptl/fork.c:56 #1 0x00007f1d4305a388 in () at /lib/x86_64-linux-gnu/libvte-2.91.so.0 #2 0x00007f1d43030d52 in () at /lib/x86_64-linux-gnu/libvte-2.91.so.0 #3 0x00007f1d43030ed5 in () at /lib/x86_64-linux-gnu/libvte-2.91.so.0 #4 0x00007f1d4236e343 in () at /lib/x86_64-linux-gnu/libgio-2.0.so.0 #5 0x00007f1d41fbddb3 in () at /lib/x86_64-linux-gnu/libglib-2.0.so.0 #6 0x00007f1d41fbd415 in () at /lib/x86_64-linux-gnu/libglib-2.0.so.0 #7 0x00007f1d41d2afa3 in start_thread (arg=<optimized out>) at pthread_create.c:486 #8 0x00007f1d41c5b4cf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95 # With debug symbols (rr) bt #0 0x00007f1d41c28770 in __libc_fork () at ../sysdeps/nptl/fork.c:56 #1 0x00007f1d4305a388 in fork_exec_with_pipes (error=0x7f1d3d19c830, pollfd=0x0, timeout=30000, standard_error=0x0, standard_output=0x0, standard_input=0x0, child_pid=0x7f1d3d19c8fc, user_data=0x55f2eb122860, child_setup=0x7f1d430302e0 <vte_pty_child_setup(VtePty*)>, cloexec_pipes=0, file_and_argv_zero=1, child_inherits_stdin=1, stderr_to_null=0, stdout_to_null=0, search_path_from_envp=0, search_path=1, close_descriptors=1, envp=0x7f1d34001c70, argv=0x55f2eb123fd0, working_directory=0x55f2eb123fb0 "/home/benutzer", intermediate_child=0) at ../../src/vtespawn.cc:794 #2 0x00007f1d4305a388 in vte_spawn_async_with_pipes_cancellable(char const*, char**, char**, GSpawnFlags, void (*)(void*), void*, int*, int*, int*, int*, int, _GPollFD*, _GError**) (working_directory=working_directory@entry=0x55f2eb123fb0 "/home/benutzer", argv=argv@entry=0x55f2eb123fd0, envp=envp@entry=0x7f1d34001c70, flags=flags@entry=(G_SPAWN_DO_NOT_REAP_CHILD | G_SPAWN_SEARCH_PATH | G_SPAWN_CHILD_INHERITS_STDIN | G_SPAWN_FILE_AND_ARGV_ZERO), child_setup=child_setup@entry=0x7f1d430302e0 <vte_pty_child_setup(VtePty*)>, user_data=user_data@entry=0x55f2eb122860, child_pid=0x7f1d3d19c8fc, standard_input=0x0, standard_output=0x0, standard_error=0x0, timeout=30000, pollfd=0x0, error=0x7f1d3d19c830) at ../../src/vtespawn.cc:217 #3 0x00007f1d43030d52 in __vte_pty_spawn(VtePty*, char const*, char**, char**, GSpawnFlags, GSpawnChildSetupFunc, gpointer, GPid*, int, GCancellable*, GError**) (pty=0x55f2eb122860 [VtePty], directory=0x55f2eb123fb0 "/home/benutzer", argv=0x55f2eb123fd0, envv=<optimized out>, spawn_flags_=<optimized out>, child_setup=0x0, child_setup_data=0x0, child_pid=0x7f1d3d19c8fc, timeout=30000, cancellable=0x0, error=0x7f1d3d19c900) at ../../src/pty.cc:278 #4 0x00007f1d43030ed5 in async_spawn_run_in_thread(GTask*, gpointer, gpointer, GCancellable*) (task=0x55f2eb0a8430 [GTask], object=<optimized out>, data_=<optimized out>, cancellable=<optimized out>) at ../../src/pty.cc:1099 #5 0x00007f1d4236e343 in g_task_thread_pool_thread (thread_data=0x55f2eb0a8430, pool_data=<optimized out>) at ../../../gio/gtask.c:1331 #6 0x00007f1d41fbddb3 in g_thread_pool_thread_proxy (data=<optimized out>) at ../../../glib/gthreadpool.c:307 #7 0x00007f1d41fbd415 in g_thread_proxy (data=0x55f2eb118770) at ../../../glib/gthread.c:784 #8 0x00007f1d41d2afa3 in start_thread (arg=<optimized out>) at pthread_create.c:486 #9 0x00007f1d41c5b4cf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95 (rr) when Current event: 4941 # gmain.c:5395 any_unix_signal_pending = TRUE; (rr) bt #0 0x00007f1d41f91570 in g_unix_signal_handler (signum=17) at ../../../glib/gmain.c:5392 #1 0x00007f1d41d35730 in <signal handler called> () at /lib/x86_64-linux-gnu/libpthread.so.0 #2 0x0000000070000002 in () #3 0x00007f1d431e0579 in _raw_syscall () at /home/benutzer/source/rr/git/rr/src/preload/raw_syscall.S:120 #4 0x00007f1d431dc5de in traced_raw_syscall (call=call@entry=0x681fffa0) at /home/benutzer/source/rr/git/rr/src/preload/syscallbuf.c:252 #5 0x00007f1d431de1f2 in sys_statfs (call=<optimized out>) at /home/benutzer/source/rr/git/rr/src/preload/syscallbuf.c:2932 #6 0x00007f1d431de1f2 in syscall_hook_internal (call=0x681fffa0) at /home/benutzer/source/rr/git/rr/src/preload/syscallbuf.c:3197 #7 0x00007f1d431de1f2 in syscall_hook (call=0x681fffa0) at /home/benutzer/source/rr/git/rr/src/preload/syscallbuf.c:3236 #8 0x00007f1d431dc480 in _syscall_hook_trampoline () at /home/benutzer/source/rr/git/rr/src/preload/syscall_hook.S:313 #9 0x00007f1d431dc4df in __morestack () at /home/benutzer/source/rr/git/rr/src/preload/syscall_hook.S:458 #10 0x00007f1d431dc4fa in _syscall_hook_trampoline_48_3d_00_f0_ff_ff () at /home/benutzer/source/rr/git/rr/src/preload/syscall_hook.S:469 #11 0x00007f1d41c5081f in __GI___poll (fds=0x55f2eb0968e0, nfds=6, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29 #12 0x00007f1d41f95136 in g_main_context_poll (priority=<optimized out>, n_fds=6, fds=0x55f2eb0968e0, timeout=<optimized out>, context=0x55f2eaaf75a0) at ../../../glib/gmain.c:4221 #13 0x00007f1d41f95136 in g_main_context_iterate (context=0x55f2eaaf75a0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../../../glib/gmain.c:3915 #14 0x00007f1d41f954c2 in g_main_loop_run (loop=0x55f2eaacc1d0) at ../../../glib/gmain.c:4116 #15 0x00007f1d42953b15 in gtk_main () at /lib/x86_64-linux-gnu/libgtk-3.so.0 #16 0x000055f2e9db90d2 in main (argc=<optimized out>, argv=<optimized out>) at main.c:348 (rr) when Current event: 6551 (rr) bt #0 0x00007f1d41d35080 in __waitpid (pid=29653, stat_loc=stat_loc@entry=0x55f2eaee7e34, options=options@entry=1) at ../sysdeps/unix/sysv/linux/waitpid.c:30 #1 0x00007f1d41f9193e in dispatch_unix_signals_unlocked () at ../../../glib/gmain.c:5109 #2 0x00007f1d41f952b8 in dispatch_unix_signals () at ../../../glib/gmain.c:5150 #3 0x00007f1d41f952b8 in glib_worker_main (data=<optimized out>) at ../../../glib/gmain.c:5865 #4 0x00007f1d41fbd415 in g_thread_proxy (data=0x55f2eaaec000) at ../../../glib/gthread.c:784 #5 0x00007f1d41d2afa3 in start_thread (arg=<optimized out>) at pthread_create.c:486 #6 0x00007f1d41c5b4cf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95 (rr) when Current event: 6560 # Creation of PID 29671 (rr) bt #0 0x00007f1d41c28770 in __libc_fork () at ../sysdeps/nptl/fork.c:56 #1 0x00007f1d4305a388 in fork_exec_with_pipes (error=0x7f1d3d19c830, pollfd=0x0, timeout=30000, standard_error=0x0, standard_output=0x0, standard_input=0x0, child_pid=0x7f1d3d19c8fc, user_data=0x55f2eb12c220, child_setup=0x7f1d430302e0 <vte_pty_child_setup(VtePty*)>, cloexec_pipes=0, file_and_argv_zero=1, child_inherits_stdin=1, stderr_to_null=0, stdout_to_null=0, search_path_from_envp=0, search_path=1, close_descriptors=1, envp=0x7f1d34001ec0, argv=0x55f2ead29290, working_directory=0x55f2ead29270 "/home/benutzer", intermediate_child=0) at ../../src/vtespawn.cc:794 #2 0x00007f1d4305a388 in vte_spawn_async_with_pipes_cancellable(char const*, char**, char**, GSpawnFlags, void (*)(void*), void*, int*, int*, int*, int*, int, _GPollFD*, _GError**) (working_directory=working_directory@entry=0x55f2ead29270 "/home/benutzer", argv=argv@entry=0x55f2ead29290, envp=envp@entry=0x7f1d34001ec0, flags=flags@entry=(G_SPAWN_DO_NOT_REAP_CHILD | G_SPAWN_SEARCH_PATH | G_SPAWN_CHILD_INHERITS_STDIN | G_SPAWN_FILE_AND_ARGV_ZERO), child_setup=child_setup@entry=0x7f1d430302e0 <vte_pty_child_setup(VtePty*)>, user_data=user_data@entry=0x55f2eb12c220, child_pid=0x7f1d3d19c8fc, standard_input=0x0, standard_output=0x0, standard_error=0x0, timeout=30000, pollfd=0x0, error=0x7f1d3d19c830) at ../../src/vtespawn.cc:217 #3 0x00007f1d43030d52 in __vte_pty_spawn(VtePty*, char const*, char**, char**, GSpawnFlags, GSpawnChildSetupFunc, gpointer, GPid*, int, GCancellable*, GError**) (pty=0x55f2eb12c220 [VtePty], directory=0x55f2ead29270 "/home/benutzer", argv=0x55f2ead29290, envv=<optimized out>, spawn_flags_=<optimized out>, child_setup=0x0, child_setup_data=0x0, child_pid=0x7f1d3d19c8fc, timeout=30000, cancellable=0x0, error=0x7f1d3d19c900) at ../../src/pty.cc:278 #4 0x00007f1d43030ed5 in async_spawn_run_in_thread(GTask*, gpointer, gpointer, GCancellable*) (task=0x55f2eb129ac0 [GTask], object=<optimized out>, data_=<optimized out>, cancellable=<optimized out>) at ../../src/pty.cc:1099 #5 0x00007f1d4236e343 in g_task_thread_pool_thread (thread_data=0x55f2eb129ac0, pool_data=<optimized out>) at ../../../gio/gtask.c:1331 #6 0x00007f1d41fbddb3 in g_thread_pool_thread_proxy (data=<optimized out>) at ../../../glib/gthreadpool.c:307 #7 0x00007f1d41fbd415 in g_thread_proxy (data=0x55f2eb0888f0) at ../../../glib/gthread.c:784 #8 0x00007f1d41d2afa3 in start_thread (arg=<optimized out>) at pthread_create.c:486 #9 0x00007f1d41c5b4cf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95 (rr) when Current event: 6754 (rr) bt #0 0x00007f1d41d35080 in __waitpid (pid=pid@entry=29671, stat_loc=stat_loc@entry=0x55f2ead2ec44, options=options@entry=1) at ../sysdeps/unix/sysv/linux/waitpid.c:30 #1 0x00007f1d41f96342 in g_child_watch_source_new (pid=29671) at ../../../glib/gmain.c:5473 #2 0x00007f1d41f963b8 in g_child_watch_add_full (priority=priority@entry=300, pid=pid@entry=29671, function=function@entry=0x7f1d43031a10 <vte_reaper_child_watch_cb(GPid, int, gpointer)>, data=0x55f2eacb5400, notify=0x7f1d4228cc80 <g_object_unref>) at ../../../glib/gmain.c:5535 #3 0x00007f1d43031c62 in vte_reaper_add_child(int) (pid=pid@entry=29671) at ../../src/reaper.cc:143 #4 0x00007f1d43039284 in vte::terminal::Terminal::watch_child(int) (this=0x55f2eadaae00, child_pid=29671) at ../../src/vte.cc:3217 #5 0x00007f1d4305834c in spawn_async_cb(GObject*, GAsyncResult*, gpointer) (source=<optimized out>, result=<optimized out>, user_data=user_data@entry=0x55f2ead29250) at ../../src/vtegtk.cc:2594 #6 0x00007f1d4236d799 in g_task_return_now (task=0x55f2eb129ac0 [GTask]) at ../../../gio/gtask.c:1148 #7 0x00007f1d4236d7d9 in complete_in_idle_cb (task=0x55f2eb129ac0) at ../../../gio/gtask.c:1162 #8 0x00007f1d41f94dd8 in g_main_dispatch (context=0x55f2eaaf75a0) at ../../../glib/gmain.c:3182 #9 0x00007f1d41f94dd8 in g_main_context_dispatch (context=context@entry=0x55f2eaaf75a0) at ../../../glib/gmain.c:3847 #10 0x00007f1d41f951c8 in g_main_context_iterate (context=0x55f2eaaf75a0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../../../glib/gmain.c:3920 #11 0x00007f1d41f954c2 in g_main_loop_run (loop=0x55f2eaacc1d0) at ../../../glib/gmain.c:4116 #12 0x00007f1d42953b15 in gtk_main () at /lib/x86_64-linux-gnu/libgtk-3.so.0 #13 0x000055f2e9db90d2 in main (argc=<optimized out>, argv=<optimized out>) at main.c:348 (rr) when Current event: 7823 # A new signal handler ??? (rr) bt #0 0x00007f1d41d35910 in __sigaction (sig=sig@entry=17, act=act@entry=0x7ffd9f654a90, oact=oact@entry=0x7ffd9f6549f0) at ../nptl/sigaction.c:24 #1 0x00007f1d41d44b07 in execute_helper (master_fd=master_fd@entry=12, argv=argv@entry=0x7ffd9f654b60) at iface.c:98 #2 0x00007f1d41d44cfd in utempter_remove_record (master_fd=12) at iface.c:159 #3 0x000055f2e9dc952b in terminal_widget_finalize (object=0x55f2eaba1d70 [TerminalWidget]) at terminal-widget.c:202 #4 0x00007f1d4228ce22 in g_object_unref (_object=<optimized out>) at ../../../gobject/gobject.c:3346 #5 0x00007f1d4228ce22 in g_object_unref (_object=0x55f2eaba1d70) at ../../../gobject/gobject.c:3238 #6 0x00007f1d4283c1d0 in () at /lib/x86_64-linux-gnu/libgtk-3.so.0 #7 0x00007f1d42887136 in () at /lib/x86_64-linux-gnu/libgtk-3.so.0 #11 0x00007f1d422a497f in <emit signal ??? on instance 0x55f2eae6b720 [GtkBox]> (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>) at ../../../gobject/gsignal.c:3447 #8 0x00007f1d42287ba1 in g_closure_invoke (closure=0x55f2eab02d50, return_value=0x0, n_param_values=1, param_values=0x7ffd9f654df0, invocation_hint=0x7ffd9f654d70) at ../../../gobject/gclosure.c:810 #9 0x00007f1d4229b676 in signal_emit_unlocked_R (node=node@entry=0x55f2eab02dc0, detail=detail@entry=0, instance=instance@entry=0x55f2eae6b720, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7ffd9f654df0) at ../../../gobject/gsignal.c:3549 #10 0x00007f1d422a42be in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7ffd9f654fa0) at ../../../gobject/gsignal.c:3391 #12 0x00007f1d42a9b30c in () at /lib/x86_64-linux-gnu/libgtk-3.so.0 #13 0x00007f1d4228e5f8 in g_object_run_dispose (object=0x55f2eae6b720 [GtkBox]) at ../../../gobject/gobject.c:1108 #14 0x00007f1d42981c30 in () at /lib/x86_64-linux-gnu/libgtk-3.so.0 #15 0x00007f1d42887136 in () at /lib/x86_64-linux-gnu/libgtk-3.so.0 #19 0x00007f1d422a497f in <emit signal ??? on instance 0x55f2eab20810 [TerminalScreen]> (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>) at ../../../gobject/gsignal.c:3447 #16 0x00007f1d42287ba1 in g_closure_invoke (closure=0x55f2eab02d50, return_value=0x0, n_param_values=1, param_values=0x7ffd9f6552b0, invocation_hint=0x7ffd9f655230) at ../../../gobject/gclosure.c:810 #17 0x00007f1d4229b676 in signal_emit_unlocked_R (node=node@entry=0x55f2eab02dc0, detail=detail@entry=0, instance=instance@entry=0x55f2eab20810, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7ffd9f6552b0) at ../../../gobject/gsignal.c:3549 #18 0x00007f1d422a42be in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7ffd9f655460) at ../../../gobject/gsignal.c:3391 #20 0x00007f1d42a9b30c in () at /lib/x86_64-linux-gnu/libgtk-3.so.0 #21 0x00007f1d4228e5f8 in g_object_run_dispose (object=0x55f2eab20810 [TerminalScreen]) at ../../../gobject/gobject.c:1108 #22 0x00007f1d429750de in () at /lib/x86_64-linux-gnu/libgtk-3.so.0 #23 0x00007f1d42887136 in () at /lib/x86_64-linux-gnu/libgtk-3.so.0 #27 0x00007f1d422a497f in <emit signal ??? on instance 0x55f2eadfc6e0 [GtkNotebook]> (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>) at ../../../gobject/gsignal.c:3447 #24 0x00007f1d42287ba1 in g_closure_invoke (closure=0x55f2eab02d50, return_value=0x0, n_param_values=1, param_values=0x7ffd9f655790, invocation_hint=0x7ffd9f655710) at ../../../gobject/gclosure.c:810 #25 0x00007f1d4229b676 in signal_emit_unlocked_R (node=node@entry=0x55f2eab02dc0, detail=detail@entry=0, instance=instance@entry=0x55f2eadfc6e0, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7ffd9f655790) at ../../../gobject/gsignal.c:3549 #26 0x00007f1d422a42be in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7ffd9f655940) at ../../../gobject/gsignal.c:3391 #28 0x00007f1d42a9b30c in () at /lib/x86_64-linux-gnu/libgtk-3.so.0 #29 0x00007f1d4228e5f8 in g_object_run_dispose (object=0x55f2eadfc6e0 [GtkNotebook]) at ../../../gobject/gobject.c:1108 #30 0x00007f1d4283c1d0 in () at /lib/x86_64-linux-gnu/libgtk-3.so.0 #31 0x00007f1d42887136 in () at /lib/x86_64-linux-gnu/libgtk-3.so.0 #35 0x00007f1d422a497f in <emit signal ??? on instance 0x55f2eae6bf60 [GtkBox]> (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>) at ../../../gobject/gsignal.c:3447 #32 0x00007f1d42287ba1 in g_closure_invoke (closure=0x55f2eab02d50, return_value=0x0, n_param_values=1, param_values=0x7ffd9f655c60, invocation_hint=0x7ffd9f655be0) at ../../../gobject/gclosure.c:810 #33 0x00007f1d4229b676 in signal_emit_unlocked_R (node=node@entry=0x55f2eab02dc0, detail=detail@entry=0, instance=instance@entry=0x55f2eae6bf60, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7ffd9f655c60) at ../../../gobject/gsignal.c:3549 #34 0x00007f1d422a42be in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7ffd9f655e10) at ../../../gobject/gsignal.c:3391 #36 0x00007f1d42a9b30c in () at /lib/x86_64-linux-gnu/libgtk-3.so.0 #37 0x00007f1d4228e5f8 in g_object_run_dispose (object=0x55f2eae6bf60 [GtkBox]) at ../../../gobject/gobject.c:1108 #38 0x00007f1d42aa73a9 in () at /lib/x86_64-linux-gnu/libgtk-3.so.0 #39 0x00007f1d42887136 in () at /lib/x86_64-linux-gnu/libgtk-3.so.0 #43 0x00007f1d422a497f in <emit signal ??? on instance 0x55f2eadf2c00 [TerminalWindow]> (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>) at ../../../gobject/gsignal.c:3447 #40 0x00007f1d42287c8d in g_closure_invoke (closure=0x55f2eab02d50, return_value=0x0, n_param_values=1, param_values=0x7ffd9f656140, invocation_hint=0x7ffd9f6560c0) at ../../../gobject/gclosure.c:810 #41 0x00007f1d4229b676 in signal_emit_unlocked_R (node=node@entry=0x55f2eab02dc0, detail=detail@entry=0, instance=instance@entry=0x55f2eadf2c00, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7ffd9f656140) at ../../../gobject/gsignal.c:3549 #42 0x00007f1d422a42be in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7ffd9f6562f0) at ../../../gobject/gsignal.c:3391 #44 0x00007f1d42a9b30c in () at /lib/x86_64-linux-gnu/libgtk-3.so.0 #45 0x00007f1d42aaeb38 in () at /lib/x86_64-linux-gnu/libgtk-3.so.0 #46 0x00007f1d4228e5f8 in g_object_run_dispose (object=0x55f2eadf2c00 [TerminalWindow]) at ../../../gobject/gobject.c:1108 #47 0x00007f1d42954988 in gtk_main_do_event () at /lib/x86_64-linux-gnu/libgtk-3.so.0 #48 0x00007f1d42656465 in () at /lib/x86_64-linux-gnu/libgdk-3.so.0 #49 0x00007f1d42687112 in () at /lib/x86_64-linux-gnu/libgdk-3.so.0 #50 0x00007f1d41f94f2e in g_main_dispatch (context=0x55f2eaaf75a0) at ../../../glib/gmain.c:3182 #51 0x00007f1d41f94f2e in g_main_context_dispatch (context=context@entry=0x55f2eaaf75a0) at ../../../glib/gmain.c:3847 #52 0x00007f1d41f951c8 in g_main_context_iterate (context=0x55f2eaaf75a0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../../../glib/gmain.c:3920 #53 0x00007f1d41f954c2 in g_main_loop_run (loop=0x55f2eaacc1d0) at ../../../glib/gmain.c:4116 #54 0x00007f1d42953b15 in gtk_main () at /lib/x86_64-linux-gnu/libgtk-3.so.0 #55 0x000055f2e9db90d2 in main (argc=<optimized out>, argv=<optimized out>) at main.c:348 (rr) when Current event: 8163 # Reinstalls old signal handler (rr) bt #0 0x00007f1d41d35910 in __sigaction (sig=sig@entry=17, act=act@entry=0x7ffd9f6549f0, oact=oact@entry=0x0) at ../nptl/sigaction.c:24 #1 0x00007f1d41d44b39 in execute_helper (master_fd=master_fd@entry=12, argv=argv@entry=0x7ffd9f654b60) at iface.c:133 #2 0x00007f1d41d44cfd in utempter_remove_record (master_fd=12) at iface.c:159 #3 0x000055f2e9dc952b in terminal_widget_finalize (object=0x55f2eaba1d70 [TerminalWidget]) at terminal-widget.c:202 #4 0x00007f1d4228ce22 in g_object_unref (_object=<optimized out>) at ../../../gobject/gobject.c:3346 #5 0x00007f1d4228ce22 in g_object_unref (_object=0x55f2eaba1d70) at ../../../gobject/gobject.c:3238 #6 0x00007f1d4283c1d0 in () at /lib/x86_64-linux-gnu/libgtk-3.so.0 #7 0x00007f1d42887136 in () at /lib/x86_64-linux-gnu/libgtk-3.so.0 #11 0x00007f1d422a497f in <emit signal ??? on instance 0x55f2eae6b720 [GtkBox]> (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>) at ../../../gobject/gsignal.c:3447 #8 0x00007f1d42287ba1 in g_closure_invoke (closure=0x55f2eab02d50, return_value=0x0, n_param_values=1, param_values=0x7ffd9f654df0, invocation_hint=0x7ffd9f654d70) at ../../../gobject/gclosure.c:810 #9 0x00007f1d4229b676 in signal_emit_unlocked_R (node=node@entry=0x55f2eab02dc0, detail=detail@entry=0, instance=instance@entry=0x55f2eae6b720, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7ffd9f654df0) at ../../../gobject/gsignal.c:3549 #10 0x00007f1d422a42be in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7ffd9f654fa0) at ../../../gobject/gsignal.c:3391 #12 0x00007f1d42a9b30c in () at /lib/x86_64-linux-gnu/libgtk-3.so.0 #13 0x00007f1d4228e5f8 in g_object_run_dispose (object=0x55f2eae6b720 [GtkBox]) at ../../../gobject/gobject.c:1108 #14 0x00007f1d42981c30 in () at /lib/x86_64-linux-gnu/libgtk-3.so.0 #15 0x00007f1d42887136 in () at /lib/x86_64-linux-gnu/libgtk-3.so.0 #19 0x00007f1d422a497f in <emit signal ??? on instance 0x55f2eab20810 [TerminalScreen]> (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>) at ../../../gobject/gsignal.c:3447 #16 0x00007f1d42287ba1 in g_closure_invoke (closure=0x55f2eab02d50, return_value=0x0, n_param_values=1, param_values=0x7ffd9f6552b0, invocation_hint=0x7ffd9f655230) at ../../../gobject/gclosure.c:810 #17 0x00007f1d4229b676 in signal_emit_unlocked_R (node=node@entry=0x55f2eab02dc0, detail=detail@entry=0, instance=instance@entry=0x55f2eab20810, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7ffd9f6552b0) at ../../../gobject/gsignal.c:3549 #18 0x00007f1d422a42be in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7ffd9f655460) at ../../../gobject/gsignal.c:3391 #20 0x00007f1d42a9b30c in () at /lib/x86_64-linux-gnu/libgtk-3.so.0 #21 0x00007f1d4228e5f8 in g_object_run_dispose (object=0x55f2eab20810 [TerminalScreen]) at ../../../gobject/gobject.c:1108 #22 0x00007f1d429750de in () at /lib/x86_64-linux-gnu/libgtk-3.so.0 #23 0x00007f1d42887136 in () at /lib/x86_64-linux-gnu/libgtk-3.so.0 #27 0x00007f1d422a497f in <emit signal ??? on instance 0x55f2eadfc6e0 [GtkNotebook]> (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>) at ../../../gobject/gsignal.c:3447 #24 0x00007f1d42287ba1 in g_closure_invoke (closure=0x55f2eab02d50, return_value=0x0, n_param_values=1, param_values=0x7ffd9f655790, invocation_hint=0x7ffd9f655710) at ../../../gobject/gclosure.c:810 #25 0x00007f1d4229b676 in signal_emit_unlocked_R (node=node@entry=0x55f2eab02dc0, detail=detail@entry=0, instance=instance@entry=0x55f2eadfc6e0, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7ffd9f655790) at ../../../gobject/gsignal.c:3549 #26 0x00007f1d422a42be in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7ffd9f655940) at ../../../gobject/gsignal.c:3391 #28 0x00007f1d42a9b30c in () at /lib/x86_64-linux-gnu/libgtk-3.so.0 #29 0x00007f1d4228e5f8 in g_object_run_dispose (object=0x55f2eadfc6e0 [GtkNotebook]) at ../../../gobject/gobject.c:1108 #30 0x00007f1d4283c1d0 in () at /lib/x86_64-linux-gnu/libgtk-3.so.0 #31 0x00007f1d42887136 in () at /lib/x86_64-linux-gnu/libgtk-3.so.0 #35 0x00007f1d422a497f in <emit signal ??? on instance 0x55f2eae6bf60 [GtkBox]> (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>) at ../../../gobject/gsignal.c:3447 #32 0x00007f1d42287ba1 in g_closure_invoke (closure=0x55f2eab02d50, return_value=0x0, n_param_values=1, param_values=0x7ffd9f655c60, invocation_hint=0x7ffd9f655be0) at ../../../gobject/gclosure.c:810 #33 0x00007f1d4229b676 in signal_emit_unlocked_R (node=node@entry=0x55f2eab02dc0, detail=detail@entry=0, instance=instance@entry=0x55f2eae6bf60, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7ffd9f655c60) at ../../../gobject/gsignal.c:3549 #34 0x00007f1d422a42be in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7ffd9f655e10) at ../../../gobject/gsignal.c:3391 #36 0x00007f1d42a9b30c in () at /lib/x86_64-linux-gnu/libgtk-3.so.0 #37 0x00007f1d4228e5f8 in g_object_run_dispose (object=0x55f2eae6bf60 [GtkBox]) at ../../../gobject/gobject.c:1108 #38 0x00007f1d42aa73a9 in () at /lib/x86_64-linux-gnu/libgtk-3.so.0 #39 0x00007f1d42887136 in () at /lib/x86_64-linux-gnu/libgtk-3.so.0 #43 0x00007f1d422a497f in <emit signal ??? on instance 0x55f2eadf2c00 [TerminalWindow]> (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>) at ../../../gobject/gsignal.c:3447 #40 0x00007f1d42287c8d in g_closure_invoke (closure=0x55f2eab02d50, return_value=0x0, n_param_values=1, param_values=0x7ffd9f656140, invocation_hint=0x7ffd9f6560c0) at ../../../gobject/gclosure.c:810 #41 0x00007f1d4229b676 in signal_emit_unlocked_R (node=node@entry=0x55f2eab02dc0, detail=detail@entry=0, instance=instance@entry=0x55f2eadf2c00, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7ffd9f656140) at ../../../gobject/gsignal.c:3549 #42 0x00007f1d422a42be in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7ffd9f6562f0) at ../../../gobject/gsignal.c:3391 #44 0x00007f1d42a9b30c in () at /lib/x86_64-linux-gnu/libgtk-3.so.0 #45 0x00007f1d42aaeb38 in () at /lib/x86_64-linux-gnu/libgtk-3.so.0 #46 0x00007f1d4228e5f8 in g_object_run_dispose (object=0x55f2eadf2c00 [TerminalWindow]) at ../../../gobject/gobject.c:1108 #47 0x00007f1d42954988 in gtk_main_do_event () at /lib/x86_64-linux-gnu/libgtk-3.so.0 #48 0x00007f1d42656465 in () at /lib/x86_64-linux-gnu/libgdk-3.so.0 #49 0x00007f1d42687112 in () at /lib/x86_64-linux-gnu/libgdk-3.so.0 #50 0x00007f1d41f94f2e in g_main_dispatch (context=0x55f2eaaf75a0) at ../../../glib/gmain.c:3182 #51 0x00007f1d41f94f2e in g_main_context_dispatch (context=context@entry=0x55f2eaaf75a0) at ../../../glib/gmain.c:3847 #52 0x00007f1d41f951c8 in g_main_context_iterate (context=0x55f2eaaf75a0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../../../glib/gmain.c:3920 #53 0x00007f1d41f954c2 in g_main_loop_run (loop=0x55f2eaacc1d0) at ../../../glib/gmain.c:4116 #54 0x00007f1d42953b15 in gtk_main () at /lib/x86_64-linux-gnu/libgtk-3.so.0 #55 0x000055f2e9db90d2 in main (argc=<optimized out>, argv=<optimized out>) at main.c:348 (rr) when Current event: 8554 # event 8276, PID 29671 got KILL signal (rr) bt #0 0x00007f1d41f91570 in g_unix_signal_handler (signum=17) at ../../../glib/gmain.c:5392 #1 0x00007f1d41d35730 in <signal handler called> () at /lib/x86_64-linux-gnu/libpthread.so.0 #2 0x0000000070000002 in () #3 0x00007f1d431e0579 in _raw_syscall () at /home/benutzer/source/rr/git/rr/src/preload/raw_syscall.S:120 #4 0x00007f1d431dc5de in traced_raw_syscall (call=call@entry=0x681fffa0) at /home/benutzer/source/rr/git/rr/src/preload/syscallbuf.c:252 #5 0x00007f1d431de1f2 in sys_statfs (call=<optimized out>) at /home/benutzer/source/rr/git/rr/src/preload/syscallbuf.c:2932 #6 0x00007f1d431de1f2 in syscall_hook_internal (call=0x681fffa0) at /home/benutzer/source/rr/git/rr/src/preload/syscallbuf.c:3197 #7 0x00007f1d431de1f2 in syscall_hook (call=0x681fffa0) at /home/benutzer/source/rr/git/rr/src/preload/syscallbuf.c:3236 #8 0x00007f1d431dc480 in _syscall_hook_trampoline () at /home/benutzer/source/rr/git/rr/src/preload/syscall_hook.S:313 #9 0x00007f1d431dc4df in __morestack () at /home/benutzer/source/rr/git/rr/src/preload/syscall_hook.S:458 #10 0x00007f1d431dc4fa in _syscall_hook_trampoline_48_3d_00_f0_ff_ff () at /home/benutzer/source/rr/git/rr/src/preload/syscall_hook.S:469 #11 0x00007f1d41c5081f in __GI___poll (fds=0x55f2eb0968e0, nfds=5, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29 #12 0x00007f1d41f95136 in g_main_context_poll (priority=<optimized out>, n_fds=5, fds=0x55f2eb0968e0, timeout=<optimized out>, context=0x55f2eaaf75a0) at ../../../glib/gmain.c:4221 #13 0x00007f1d41f95136 in g_main_context_iterate (context=0x55f2eaaf75a0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../../../glib/gmain.c:3915 #14 0x00007f1d41f954c2 in g_main_loop_run (loop=0x55f2eaacc1d0) at ../../../glib/gmain.c:4116 #15 0x00007f1d42953b15 in gtk_main () at /lib/x86_64-linux-gnu/libgtk-3.so.0 #16 0x000055f2e9db90d2 in main (argc=<optimized out>, argv=<optimized out>) at main.c:348 (rr) when Current event: 9002 -> why so late? ... we got here just twice, but three bash processes had executed ??? (rr) bt #0 0x00007f1d41d35080 in __waitpid (pid=29671, stat_loc=stat_loc@entry=0x55f2ead2ec44, options=options@entry=1) at ../sysdeps/unix/sysv/linux/waitpid.c:30 #1 0x00007f1d41f9193e in dispatch_unix_signals_unlocked () at ../../../glib/gmain.c:5109 #2 0x00007f1d41f952b8 in dispatch_unix_signals () at ../../../glib/gmain.c:5150 #3 0x00007f1d41f952b8 in glib_worker_main (data=<optimized out>) at ../../../glib/gmain.c:5865 #4 0x00007f1d41fbd415 in g_thread_proxy (data=0x55f2eaaec000) at ../../../glib/gthread.c:784 #5 0x00007f1d41d2afa3 in start_thread (arg=<optimized out>) at pthread_create.c:486 #6 0x00007f1d41c5b4cf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95 (rr) when Current event: 9019 (rr) bt #0 0x00007f1d41d35080 in __waitpid (pid=29630, stat_loc=stat_loc@entry=0x55f2eafbd3e4, options=options@entry=1) at ../sysdeps/unix/sysv/linux/waitpid.c:30 #1 0x00007f1d41f9193e in dispatch_unix_signals_unlocked () at ../../../glib/gmain.c:5109 #2 0x00007f1d41f952b8 in dispatch_unix_signals () at ../../../glib/gmain.c:5150 #3 0x00007f1d41f952b8 in glib_worker_main (data=<optimized out>) at ../../../glib/gmain.c:5865 #4 0x00007f1d41fbd415 in g_thread_proxy (data=0x55f2eaaec000) at ../../../glib/gthread.c:784 #5 0x00007f1d41d2afa3 in start_thread (arg=<optimized out>) at pthread_create.c:486 #6 0x00007f1d41c5b4cf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95 (rr) when Current event: 9023 ########### (rr) list iface.c:89,137 89 static int 90 execute_helper(int master_fd, const char *const argv[]) 91 { 92 struct sigaction saved_action, action; 93 94 action.sa_handler = SIG_DFL; 95 action.sa_flags = SA_RESTART; 96 sigemptyset(&action.sa_mask); 97 98 if (sigaction(SIGCHLD, &action, &saved_action) < 0) 99 { 100 #ifdef UTEMPTER_DEBUG 101 fprintf(stderr, "libutempter: sigaction: %s\n", 102 strerror(errno)); 103 #endif 104 return 0; 105 } else 106 { 107 pid_t child; 108 int status = 1; 109 110 child = fork(); 111 if (!child) 112 { 113 do_child(master_fd, argv[0], (char *const *) argv); 114 } else if (child < 0) 115 { 116 #ifdef UTEMPTER_DEBUG 117 fprintf(stderr, "libutempter: fork: %s\n", 118 strerror(errno)); 119 #endif 120 goto ret; 121 } 122 123 if (TEMP_FAILURE_RETRY(waitpid(child, &status, 0)) < 0) 124 { 125 #ifdef UTEMPTER_DEBUG 126 fprintf(stderr, "libutempter: waitpid: %s\n", 127 strerror(errno)); 128 #endif 129 status = 1; 130 } 131 132 ret: 133 (void) sigaction(SIGCHLD, &saved_action, 0); 134 return !status; 135 } 136 } 137 (rr) list iface.c:154,165 154 int 155 utempter_remove_record(int master_fd) 156 { 157 const char *const args[] = 158 { utempter_pathname ? : UTEMPTER_DEFAULT_PATHNAME, "del", 0 }; 159 int status = execute_helper(master_fd, args); 160 161 if (master_fd == saved_fd) 162 saved_fd = -1; 163 164 return status; 165 } (rr) list terminal-widget.c:194,212 194 static void 195 terminal_widget_finalize (GObject *object) 196 { 197 TerminalWidget *widget = TERMINAL_WIDGET (object); 198 199 #ifdef HAVE_LIBUTEMPTER 200 VtePty *pty = vte_terminal_get_pty (VTE_TERMINAL (widget)); 201 if (VTE_IS_PTY (pty)) 202 utempter_remove_record (vte_pty_get_fd (pty)); 203 #endif 204 205 /* disconnect the misc-highlight-urls watch */ 206 g_signal_handlers_disconnect_by_func (G_OBJECT (widget->preferences), G_CALLBACK (terminal_widget_update_highlight_urls), widget); 207 208 /* disconnect from the preferences */ 209 g_object_unref (G_OBJECT (widget->preferences)); 210 211 (*G_OBJECT_CLASS (terminal_widget_parent_class)->finalize) (object); 212 }
Description: Resend SIGCHLD signals if we receive more than expected. Bug-Debian: https://bugs.debian.org/941125 Forwarded: no Last-Update: 2020-08-23 Index: libutempter-1.1.6/iface.c =================================================================== --- libutempter-1.1.6.orig/iface.c +++ libutempter-1.1.6/iface.c @@ -86,12 +86,21 @@ do_child(int master_fd, const char *path _exit(EXIT_FAILURE); } +static int cnt_SIGCHLD; +static void handle_SIGCHLD(int signum) +{ + if (signum=SIGCHLD) + { + cnt_SIGCHLD++; + } +} static int execute_helper(int master_fd, const char *const argv[]) { struct sigaction saved_action, action; - action.sa_handler = SIG_DFL; + cnt_SIGCHLD = 0; + action.sa_handler = handle_SIGCHLD; action.sa_flags = SA_RESTART; sigemptyset(&action.sa_mask); @@ -131,6 +140,12 @@ execute_helper(int master_fd, const char ret: (void) sigaction(SIGCHLD, &saved_action, 0); + for (; cnt_SIGCHLD > 1; cnt_SIGCHLD--) { + kill(getpid(), SIGCHLD); +#ifdef UTEMPTER_DEBUG + fprintf(stderr, "libutempter: resent unexpected SIGCHLD\n"); +#endif + } return !status; } }