Bug#941125: xfce4-terminal: Multiple open windows; closing one by button; bash zombie
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;
}
}
Reply to: