On Mon, 15 Sep 2025 19:23:20 +0100 Peter Krefting <[email protected]> 
wrote:
Package: lxpanel
Version: 0.11.1-1
Severity: normal

Dear Maintainer,

after upgrading the Debian 13, lxpanel repeatedly crashes. I am using an
LXDE setup, with lightdm as the login handler.

Looking at the times, it seems to be related to returning to the desktop
from xscreensaver:

Hello,
I tried to get some more information from the backtrace combined with the 
dbgsym package.

And I think the crashing strftime call is in function `dclock_update_display` 
[1].

A crash may be possible if `current_time` is a null pointer,
which may be possible when searching the net for it.

Installing the lxpanel-dbgsym package and inspecting a core file
by `systemd-coredump gdb [PID]` and executing the command `bt`
may be able to prove this.

Kind regards,
Bernhard

[1] https://github.com/lxde/lxpanel/blob/master/plugins/dclock.c#L194
# 2025-10-19 Trixie/stable amd64 qemu VM

apt install systemd-coredump xserver-xorg slim jwm xterm htop btop tmux gdb mc 
quilt lxpanel lxpanel-dbgsym


From https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1115333 :
                Stack trace of thread 14098:
                #0  0x00007f0da2beb524 __strftime_internal (libc.so.6 + 0xd7524)
                #1  0x00007f0da2bed948 __GI___strftime_l (libc.so.6 + 0xd9948)
                #2  0x000055ef78d88170 n/a (/usr/bin/lxpanel + 0x12170)
                #3  0x00007f0da2eb144e n/a (libglib-2.0.so.0 + 0x5f44e)
                #4  0x00007f0da2eae3c5 n/a (libglib-2.0.so.0 + 0x5c3c5)
                #5  0x00007f0da2eb05f7 n/a (libglib-2.0.so.0 + 0x5e5f7)
                #6  0x00007f0da2eb105f g_main_loop_run (libglib-2.0.so.0 + 
0x5f05f)
                #7  0x00007f0da360705d gtk_main (libgtk-3.so.0 + 0x20705d)
                #8  0x000055ef78d85626 main (/usr/bin/lxpanel + 0xf626)


benutzer@debian:~$ gdb -q
(gdb) file /usr/bin/lxpanel
Reading symbols from /usr/bin/lxpanel...
Reading symbols from 
/usr/lib/debug/.build-id/36/37aad31c3695831ef2dccb2705ff9405d8d7df.debug...
(gdb) tb main
Temporary breakpoint 1 at 0xf220: file ./src/main.c, line 464.
(gdb) run
Starting program: /usr/bin/lxpanel 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".

Temporary breakpoint 1, main (argc=1, argv=0x7fffffffe408, env=0x7fffffffe418) 
at ./src/main.c:464
warning: 464    ./src/main.c: Datei oder Verzeichnis nicht gefunden
(gdb) info inferior
  Num  Description       Connection           Executable        
* 1    process 36918     1 (native)           /usr/bin/lxpanel  
(gdb) shell cat /proc/36918/maps | grep -i lxpanel
555555554000-555555561000 r--p 00000000 08:02 702110                     
/usr/bin/lxpanel
555555561000-555555573000 r-xp 0000d000 08:02 702110                     
/usr/bin/lxpanel
555555573000-555555579000 r--p 0001f000 08:02 702110                     
/usr/bin/lxpanel
555555579000-55555557b000 r--p 00024000 08:02 702110                     
/usr/bin/lxpanel
55555557b000-55555557c000 rw-p 00026000 08:02 702110                     
/usr/bin/lxpanel
7ffff7f91000-7ffff7f9f000 r--p 00000000 08:02 802477                     
/usr/lib/x86_64-linux-gnu/lxpanel/liblxpanel.so.0.0.0
7ffff7f9f000-7ffff7fb5000 r-xp 0000e000 08:02 802477                     
/usr/lib/x86_64-linux-gnu/lxpanel/liblxpanel.so.0.0.0
7ffff7fb5000-7ffff7fbc000 r--p 00024000 08:02 802477                     
/usr/lib/x86_64-linux-gnu/lxpanel/liblxpanel.so.0.0.0
7ffff7fbc000-7ffff7fbe000 r--p 0002a000 08:02 802477                     
/usr/lib/x86_64-linux-gnu/lxpanel/liblxpanel.so.0.0.0
7ffff7fbe000-7ffff7fbf000 rw-p 0002c000 08:02 802477                     
/usr/lib/x86_64-linux-gnu/lxpanel/liblxpanel.so.0.0.0
(gdb) print/x 0x555555554000 + 0xf626
$1 = 0x555555563626
(gdb) b *0x555555563626
Breakpoint 2 at 0x555555563626: file ./src/main.c, line 574.
(gdb) disassemble 0x555555563626-32,0x555555563626+10
Dump of assembler code from 0x555555563606 to 0x555555563630:
   0x0000555555563606 <main+998>:       call   0x555555565770 
<_start_panels_from_dir>
   0x000055555556360b <main+1003>:      mov    %rbx,%rdi
   0x000055555556360e <main+1006>:      call   0x5555555631f0 <g_free@plt>
   0x0000555555563613 <main+1011>:      cmpq   $0x0,0x18265(%rip)        # 
0x55555557b880 <all_panels>
   0x000055555556361b <main+1019>:      je     0x5555555637cb <main+1451>
   0x0000555555563621 <main+1025>:      call   0x555555562500 <gtk_main@plt>
   0x0000555555563626 <main+1030>:      call   0x555555561750 
<gdk_x11_get_default_root_xwindow@plt>
   0x000055555556362b <main+1035>:      mov    %rax,%rbx
   0x000055555556362e <main+1038>:      call   0x555555561f80 
<gdk_display_get_default@plt>
End of assembler dump.
(gdb) info b
Num     Type           Disp Enb Address            What
2       breakpoint     keep y   0x0000555555563626 in main at ./src/main.c:574
(gdb) print/x 0x555555554000 + 0x12170
$2 = 0x555555566170
(gdb) b *0x555555566170
Breakpoint 3 at 0x555555566170: file ./plugins/dclock.c, line 199.
(gdb) disassemble 0x555555566170-32,0x555555566170+10
Dump of assembler code from 0x555555566150 to 0x55555556617a:
   0x0000555555566150 <dclock_update_display+240>:      cmp    %al,%dh
   0x0000555555566152 <dclock_update_display+242>:      rex.R and $0x50,%al
   0x0000555555566155 <dclock_update_display+245>:      add    
%cl,0x64(%rbp,%rcx,4)
   0x0000555555566159 <dclock_update_display+249>:      and    $0x50,%al
   0x000055555556615b <dclock_update_display+251>:      test   %rdx,%rdx
   0x000055555556615e <dclock_update_display+254>:      je     0x555555566170 
<dclock_update_display+272>
   0x0000555555566160 <dclock_update_display+256>:      mov    %rbp,%rcx
   0x0000555555566163 <dclock_update_display+259>:      mov    $0x40,%esi
   0x0000555555566168 <dclock_update_display+264>:      mov    %r12,%rdi
   0x000055555556616b <dclock_update_display+267>:      call   0x555555561d80 
<strftime@plt>
   0x0000555555566170 <dclock_update_display+272>:      mov    0x4c(%rbx),%edx
   0x0000555555566173 <dclock_update_display+275>:      test   %edx,%edx
   0x0000555555566175 <dclock_update_display+277>:      jne    0x555555566279 
<dclock_update_display+537>
End of assembler dump.
(gdb) dele 3
(gdb) b *0x000055555556616b
Breakpoint 4 at 0x55555556616b: file ./plugins/dclock.c, line 194.
(gdb) info b
Num     Type           Disp Enb Address            What
2       breakpoint     keep y   0x0000555555563626 in main at ./src/main.c:574
4       breakpoint     keep y   0x000055555556616b in dclock_update_display at 
./plugins/dclock.c:194
(gdb) 



https://sources.debian.org/src/lxpanel/0.11.1-1/plugins/dclock.c#L194

https://github.com/lxde/lxpanel/blob/master/plugins/dclock.c#L194

Reply via email to