NetworkManager v1.46.0 freezes

Sven Schwermer sven.schwermer at disruptive-technologies.com
Mon Jan 20 15:03:59 UTC 2025


> it's not a known issue. I would start investigating this by analyzing
> the backtrace of thread 1 in gdb, and looking at the log at "trace"
> level of NM just before the freeze happens.


Hi Beniamino,

Thanks for the tips. So far, I have not been able to reproduce the
issue with trace-level logging enabled. Perhaps this issue is
sensitive to timing which is influenced by logging.

Thread 1 doesn't look suspicious. However, the "gdbus" thread looks
quite different from an unfrozen process:

#0 syscall () at ../sysdeps/unix/sysv/linux/arm/syscall.S:37
#1 0xb6d5092a in g_futex_wait (address=address at entry=0x23bb310,
value=1802724708) at /usr/src/debug/glib-2.0/2.78.6/glib/gbitlock.c:77
#2 0xb6d50afa in g_pointer_bit_lock (address=address at entry=0x23bb310,
lock_bit=lock_bit at entry=2) at
/usr/src/debug/glib-2.0/2.78.6/glib/gbitlock.c:455
#3 0xb6d5e4f6 in g_datalist_lock (datalist=0x23bb310) at
/usr/src/debug/glib-2.0/2.78.6/glib/gdataset.c:213
#4 g_datalist_id_dup_data (datalist=datalist at entry=0x23bb310,
key_id=81, dup_func=dup_func at entry=0x0, user_data=user_data at entry=0x0)
at /usr/src/debug/glib-2.0/2.78.6/glib/gdataset.c:973
#5 0xb6d5e550 in g_datalist_id_get_data
(datalist=datalist at entry=0x23bb310, key_id=<optimized out>) at
/usr/src/debug/glib-2.0/2.78.6/glib/gdataset.c:917
#6 0xb6e361f4 in toggle_refs_notify (object=0x23bb308, is_last_ref=1)
at /usr/src/debug/glib-2.0/2.78.6/gobject/gobject.c:3612
#7 0xb6e3658c in g_object_unref (_object=<optimized out>) at
/usr/src/debug/glib-2.0/2.78.6/gobject/gobject.c:3830
#8 0xb6f36b7a in _g_dbus_worker_queue_or_deliver_received_message
(message=warning: could not convert '_GDBusMessage' from the host
encoding (UTF-8) to UTF-32.
This normally should not happen, please file a bug report.
0x0, worker=0x2329480) at /usr/src/debug/glib-2.0/2.78.6/gio/gdbusprivate.c:521
#9 _g_dbus_worker_do_read_cb (input_stream=<optimized out>,
res=<optimized out>, user_data=0x2329480) at
/usr/src/debug/glib-2.0/2.78.6/gio/gdbusprivate.c:805
#10 0xb6ee547a in g_task_return_now (task=task at entry=0x2474db8) at
/usr/src/debug/glib-2.0/2.78.6/gio/gtask.c:1371
#11 0xb6ee54a8 in complete_in_idle_cb (task=0x2474db8) at
/usr/src/debug/glib-2.0/2.78.6/gio/gtask.c:1385
#12 0xb6d74792 in g_main_dispatch (context=context at entry=0x23297f8) at
/usr/src/debug/glib-2.0/2.78.6/glib/gmain.c:3476
#13 0xb6d76f28 in g_main_context_dispatch_unlocked (context=0x23297f8)
at /usr/src/debug/glib-2.0/2.78.6/glib/gmain.c:4284
#14 g_main_context_iterate_unlocked (context=0x23297f8,
block=block at entry=1, dispatch=dispatch at entry=1, self=<optimized out>)
at /usr/src/debug/glib-2.0/2.78.6/glib/gmain.c:4349
#15 0xb6d77582 in g_main_loop_run (loop=0x23298c0) at
/usr/src/debug/glib-2.0/2.78.6/glib/gmain.c:4551
#16 0xb6f353c6 in gdbus_shared_thread_func (user_data=0x2323b20) at
/usr/src/debug/glib-2.0/2.78.6/gio/gdbusprivate.c:284
#17 0xb6d96af2 in g_thread_proxy (data=0x2325e98) at
/usr/src/debug/glib-2.0/2.78.6/glib/gthread.c:831
#18 0xb6b5c58c in start_thread (arg=0x696c6720) at pthread_create.c:447
#19 0xb6ba9e68 in ?? () at ../sysdeps/unix/sysv/linux/arm/clone3.S:71
from /usr/lib/libc.so.6
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

The unfrozen equivalent looks like this:

#0  __libc_do_syscall () at ../sysdeps/unix/sysv/linux/arm/libc-do-syscall.S:46
#1  0xb6be6a90 in __GI___poll (timeout=-1, nfds=2, fds=0x15de338) at
/usr/src/debug/glibc/2.39+git/sysdeps/unix/sysv/linux/poll.c:29
#2  __GI___poll (fds=0x15de338, nfds=2, timeout=-1) at
/usr/src/debug/glibc/2.39+git/sysdeps/unix/sysv/linux/poll.c:26
#3  0xb6dbaeca in g_main_context_poll_unlocked (priority=<optimized
out>, n_fds=2, fds=0x15de338, timeout=-1, context=0x15ddc20) at
/usr/src/debug/glib-2.0/2.78.6/glib/gmain.c:4653
#4  g_main_context_iterate_unlocked (context=0x15ddc20,
block=block at entry=1, dispatch=dispatch at entry=1, self=<optimized out>)
at /usr/src/debug/glib-2.0/2.78.6/glib/gmain.c:4344
#5  0xb6dbb582 in g_main_loop_run (loop=0x15ddce8) at
/usr/src/debug/glib-2.0/2.78.6/glib/gmain.c:4551
#6  0xb6f793c6 in gdbus_shared_thread_func (user_data=0x15d7f48) at
/usr/src/debug/glib-2.0/2.78.6/gio/gdbusprivate.c:284
#7  0xb6ddaaf2 in g_thread_proxy (data=0x15da2c0) at
/usr/src/debug/glib-2.0/2.78.6/glib/gthread.c:831
#8  0xb6ba058c in start_thread (arg=0x696c6720) at pthread_create.c:447
#9  0xb6bede68 in ?? () at ../sysdeps/unix/sysv/linux/arm/clone3.S:71
from /usr/lib/libc.so.6
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

I'm guessing this is something I should discuss with the glib project instead?

Best regards,
Sven


More information about the Networkmanager mailing list