[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#899271: xfce4-terminal hangs in getrandom if crng not ready



Here is a gdb session up to the first call of getrandom (syscall 318) with flags=0. This trace is on unstable but buster should be similar. gnutls_rnd is called when creating a VteFileStream:


$ gdb xfce4-terminal
GNU gdb (Debian 7.12-6+b2) 7.12.0.20161007-git
Copyright (C) 2016 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 xfce4-terminal...Reading symbols from /usr/lib/debug/.build-id/91/f47fd1b6872303eef30a57d9e160f67e16720c.debug...done.
done.
(gdb) catch syscall 318
Catchpoint 1 (syscall 318)
(gdb) run
Starting program: /usr/bin/xfce4-terminal
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".

Catchpoint 1 (call to syscall 318), 0x00007ffff51e9eb4 in getrandom (buffer=buffer@entry=0x7fffffffdf4f, length=length@entry=1, flags=flags@entry=1) at ../sysdeps/unix/sysv/linux/getrandom.c:30
30      ../sysdeps/unix/sysv/linux/getrandom.c: No such file or directory.
(gdb) c
Continuing.

Catchpoint 1 (returned from syscall 318), 0x00007ffff51e9eb4 in getrandom (buffer=buffer@entry=0x7fffffffdf4f, length=length@entry=1, flags=flags@entry=1) at ../sysdeps/unix/sysv/linux/getrandom.c:30
30      in ../sysdeps/unix/sysv/linux/getrandom.c
(gdb) c
Continuing.
[New Thread 0x7fffeb2de700 (LWP 4151)]
[New Thread 0x7fffeaadd700 (LWP 4152)]
[New Thread 0x7fffe9e3a700 (LWP 4153)]

Thread 1 "xfce4-terminal" hit Catchpoint 1 (call to syscall 318), 0x00007ffff51e9ee9 in getrandom (buffer=buffer@entry=0x7fffffffcf00, length=length@entry=32, flags=flags@entry=0) at ../sysdeps/unix/sysv/linux/getrandom.c:30
30      in ../sysdeps/unix/sysv/linux/getrandom.c
(gdb) bt
#0 0x00007ffff51e9ee9 in getrandom (buffer=buffer@entry=0x7fffffffcf00, length=length@entry=32, flags=flags@entry=0) at ../sysdeps/unix/sysv/linux/getrandom.c:30 #1 0x00007ffff425b7bd in force_getrandom (flags=0, buflen=<optimized out>, buf=0x7fffffffcf00) at sysrng-linux.c:84 #2 0x00007ffff425b7bd in _rnd_get_system_entropy_getrandom (_rnd=<optimized out>, size=<optimized out>) at sysrng-linux.c:102 #3 0x00007ffff4258235 in do_device_source (init=init@entry=1, event=event@entry=0x7fffffffcf60, ctx=0x7ffff44b1900 <rnd_ctx>) at rnd.c:132 #4 0x00007ffff42583e3 in wrap_nettle_rnd_init (ctx=<optimized out>) at rnd.c:228
#5  0x00007ffff41a4294 in _gnutls_rnd_init () at random.c:48
#6 0x00007ffff41a4294 in gnutls_rnd (level=level@entry=GNUTLS_RND_KEY, data=data@entry=0x7fffffffd0b0, len=len@entry=32) at random.c:142 #7 0x00007ffff787ab2f in _vte_boa_init(VteBoa*) (boa=0x555555ab8620 [VteBoa]) at ../../src/vtestream-file.h:832 #8 0x00007ffff5ce26a5 in g_type_create_instance (type=<optimized out>) at ../../../../gobject/gtype.c:1866 #9 0x00007ffff5cc35a8 in g_object_new_internal (class=class@entry=0x555555adfc80, params=params@entry=0x0, n_params=n_params@entry=0) at ../../../../gobject/gobject.c:1799 #10 0x00007ffff5cc4d45 in g_object_new_with_properties (object_type=93824998046352, n_properties=0, names=names@entry=0x0, values=values@entry=0x0) at ../../../../gobject/gobject.c:1967 #11 0x00007ffff5cc57c1 in g_object_new (object_type=<optimized out>, first_property_name=first_property_name@entry=0x0) at ../../../../gobject/gobject.c:1639 #12 0x00007ffff787a915 in _vte_file_stream_init(VteFileStream*) (stream=0x555555ac0320 [VteFileStream]) at ../../src/vtestream-file.h:1069 #13 0x00007ffff5ce26a5 in g_type_create_instance (type=<optimized out>) at ../../../../gobject/gtype.c:1866 #14 0x00007ffff5cc35a8 in g_object_new_internal (class=class@entry=0x555555adae50, params=params@entry=0x0, n_params=n_params@entry=0) at ../../../../gobject/gobject.c:1799 #15 0x00007ffff5cc4d45 in g_object_new_with_properties (object_type=93824998078336, n_properties=0, names=names@entry=0x0, values=values@entry=0x0) at ../../../../gobject/gobject.c:1967 #16 0x00007ffff5cc57c1 in g_object_new (object_type=<optimized out>, first_property_name=first_property_name@entry=0x0) at ../../../../gobject/gobject.c:1639 #17 0x00007ffff787cbbe in _vte_file_stream_new() () at ../../src/vtestream-file.h:1063 #18 0x00007ffff7849f75 in _vte_ring_init(VteRing*, gulong, gboolean) (ring=ring@entry=0x555555ae2e50, max_rows=max_rows@entry=512, has_streams=has_streams@entry=1) at ../../src/ring.cc:71 #19 0x00007ffff7861e1a in VteTerminalPrivate::VteTerminalPrivate(_VteTerminal*) (this=0x555555ae2d70, t=<optimized out>) at ../../src/vte.cc:8074 #20 0x00007ffff7868757 in vte_terminal_init(VteTerminal*) (terminal=0x555555ae6100 [VteTerminal]) at ../../src/vtegtk.cc:381 #21 0x00007ffff5ce2668 in g_type_create_instance (type=<optimized out>) at ../../../../gobject/gtype.c:1860 #22 0x00007ffff5cc35a8 in g_object_new_internal (class=class@entry=0x555555ae28a0, params=params@entry=0x0, n_params=n_params@entry=0) at ../../../../gobject/gobject.c:1799 #23 0x00007ffff5cc4d45 in g_object_new_with_properties (object_type=93824998030304, n_properties=0, names=names@entry=0x0, values=values@entry=0x0) at ../../../../gobject/gobject.c:1967 #24 0x00007ffff5cc57c1 in g_object_new (object_type=<optimized out>, first_property_name=first_property_name@entry=0x0) at ../../../../gobject/gobject.c:1639 #25 0x0000555555573da4 in terminal_screen_init (screen=0x5555557fe3f0 [TerminalScreen]) at terminal-screen.c:298 #26 0x00007ffff5ce26a5 in g_type_create_instance (type=<optimized out>) at ../../../../gobject/gtype.c:1866 #27 0x00007ffff5cc35a8 in g_object_new_internal (class=class@entry=0x555555ada4b0, params=params@entry=0x0, n_params=n_params@entry=0) at ../../../../gobject/gobject.c:1799 #28 0x00007ffff5cc4d45 in g_object_new_with_properties (object_type=93824998028384, n_properties=0, names=names@entry=0x0, values=values@entry=0x0) at ../../../../gobject/gobject.c:1967 #29 0x00007ffff5cc57c1 in g_object_new (object_type=<optimized out>, first_property_name=first_property_name@entry=0x0) at ../../../../gobject/gobject.c:1639 #30 0x0000555555571ef2 in terminal_screen_new (attr=attr@entry=0x55555590b500, columns=80, rows=24) at terminal-screen.c:1756 #31 0x0000555555567050 in terminal_app_open_window (app=app@entry=0x55555583fd90 [TerminalApp], attr=attr@entry=0x555555935860) at terminal-app.c:835 #32 0x0000555555567b09 in terminal_app_process (app=0x55555583fd90 [TerminalApp], argv=<optimized out>, argc=<optimized out>, error=<optimized out>) at terminal-app.c:971 #33 0x0000555555565b63 in main (argc=<optimized out>, argv=<optimized out>) at main.c:335


Kind regards,

--
Ben Caradoc-Davies <ben@transient.nz>
Director
Transient Software Limited <https://transient.nz/>
New Zealand


Reply to: