[Bug 2081604] Re: pk-debconf-helper crashed with SIGSEGV in pk_client_helper_copy_stdout_cb()
Zixing Liu
2081604 at bugs.launchpad.net
Mon Sep 30 16:23:12 UTC 2024
> @Zixing, thank you for the patch, could you give some explanation
about your understanding of the issue and how is the patch addressing
the problem?
I could not reproduce the issue because I encountered another problem
(unable to launch `debconf-communicate`) while reproducing the issue
described in this bug report.
So, instead, I analyzed the re-tracer output:
The code tried to access the `error` variable (a NULL address according to the stack trace). Unfortunately, the `status` variable was "<optimized out>", but we can still try to recover its value.
There is also an unfortunate design problem with the reporter bot. It does not disassemble the code segment before the program counter (%pc register), so we must disassemble the binary ourselves to hopefully see where the return value went.
0x00007ffff7f72292 <+242>: mov -0x438(%rbp),%rdx
0x00007ffff7f72299 <+249>: lea -0x440(%rbp),%rcx
0x00007ffff7f722a0 <+256>: call 0x7ffff7f64ad0 <g_io_channel_write_chars at plt>
[0]0x00007ffff7f722a5 <+261>: cmp $0x1,%eax
[1]0x00007ffff7f722a8 <+264>: jne 0x7ffff7f72300 <pk_client_helper_copy_stdout_cb+352>
0x00007ffff7f722aa <+266>: mov -0x440(%rbp),%r8
0x00007ffff7f722b1 <+273>: mov -0x438(%rbp),%rcx
0x00007ffff7f722b8 <+280>: cmp %rcx,%r8
0x00007ffff7f722bb <+283>: je 0x7ffff7f722e0 <pk_client_helper_copy_stdout_cb+320>
0x00007ffff7f722bd <+285>: lea 0x2aa0c(%rip),%rdx # 0x7ffff7f9ccd0
0x00007ffff7f722c4 <+292>: mov $0x10,%esi
0x00007ffff7f722c9 <+297>: mov %r14,%rdi
0x00007ffff7f722cc <+300>: xor %eax,%eax
0x00007ffff7f722ce <+302>: call 0x7ffff7f65570 <g_log at plt>
0x00007ffff7f722d3 <+307>: xor %ebx,%ebx
0x00007ffff7f722d5 <+309>: jmp 0x7ffff7f72228 <pk_client_helper_copy_stdout_cb+136>
0x00007ffff7f722da <+314>: nopw 0x0(%rax,%rax,1)
0x00007ffff7f722e0 <+320>: mov %r8,%rcx
0x00007ffff7f722e3 <+323>: lea 0x27ceb(%rip),%rdx # 0x7ffff7f99fd5
0x00007ffff7f722ea <+330>: mov %r14,%rdi
0x00007ffff7f722ed <+333>: xor %eax,%eax
0x00007ffff7f722ef <+335>: mov $0x80,%esi
0x00007ffff7f722f4 <+340>: call 0x7ffff7f65570 <g_log at plt>
0x00007ffff7f722f9 <+345>: jmp 0x7ffff7f72223 <pk_client_helper_copy_stdout_cb+131>
0x00007ffff7f722fe <+350>: xchg %ax,%ax
[2]0x00007ffff7f72300 <+352>: mov -0x448(%rbp),%rax
0x00007ffff7f72307 <+359>: lea 0x27ca9(%rip),%rdx # 0x7ffff7f99fb7
0x00007ffff7f7230e <+366>: mov %r14,%rdi
0x00007ffff7f72311 <+369>: xor %ebx,%ebx
0x00007ffff7f72313 <+371>: mov $0x10,%esi
=> 0x00007ffff7f72318 <+376>: mov 0x8(%rax),%rcx
0x00007ffff7f7231c <+380>: xor %eax,%eax
The comparison with G_IO_STATUS_NORMAL (with an integer value of `1`) is
made in location [0]; we can be sure that the conditional jump at [1]
did not happen, so the control flow must go straight down.
The load that happened in [2] has overwritten our return value, so,
indeed, we can't see it.
However, we can still make an educated guess about what happened after
the I/O write operation. You can look at
https://docs.gtk.org/glib/enum.IOStatus.html; apparently, "EOF" and
"AGAIN" are not handled in this case.
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to packagekit in Ubuntu.
https://bugs.launchpad.net/bugs/2081604
Title:
pk-debconf-helper crashed with SIGSEGV in
pk_client_helper_copy_stdout_cb()
Status in packagekit package in Ubuntu:
New
Bug description:
random crash after installing Ubuntu 24.10 Beta
ProblemType: Crash
DistroRelease: Ubuntu 24.10
Package: packagekit 1.3.0-1
ProcVersionSignature: Ubuntu 6.11.0-7.7-generic 6.11.0-rc7
Uname: Linux 6.11.0-7-generic x86_64
ApportVersion: 2.30.0-0ubuntu2
Architecture: amd64
CasperMD5CheckResult: unknown
CurrentDesktop: ubuntu:GNOME
Date: Sat Sep 21 21:56:45 2024
ExecutablePath: /usr/libexec/pk-debconf-helper
InstallationDate: Installed on 2024-09-21 (0 days ago)
InstallationMedia: Ubuntu 24.10 "Oracular Oriole" - Beta amd64 (20240919)
JournalErrors:
sept. 21 21:56:41 hostname xdg-desktop-por[3252]: Could not find WebExtensions backend: Could not find native messaging host
sept. 21 21:56:46 hostname systemd[2292]: pk-debconf-helper.service: Main process exited, code=dumped, status=11/SEGV
sept. 21 21:56:46 hostname systemd[2292]: pk-debconf-helper.service: Failed with result 'core-dump'.
ProcCmdline: /usr/libexec/pk-debconf-helper
ProcEnviron:
LANG=fr_FR.UTF-8
PATH=(custom, no user)
SHELL=/bin/bash
XDG_RUNTIME_DIR=<set>
SegvAnalysis:
Segfault happened at: 0x77e2f8a5b318: mov 0x8(%rax),%rcx
PC (0x77e2f8a5b318) ok
source "0x8(%rax)" (0x00000008) not located in a known VMA region (needed readable region)!
destination "%rcx" ok
SegvReason: reading NULL VMA
Signal: 11
SignalName: SIGSEGV
SourcePackage: packagekit
StacktraceTop:
?? () from /lib/x86_64-linux-gnu/libpackagekit-glib2.so.18
?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
g_main_loop_run () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
?? ()
Title: pk-debconf-helper crashed with SIGSEGV in g_main_loop_run()
UpgradeStatus: No upgrade log present (probably fresh install)
UserGroups: adm cdrom dip lpadmin plugdev sudo users
modified.conffile..etc.dbus-1.system.d.org.freedesktop.PackageKit.conf: [deleted]
separator:
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/packagekit/+bug/2081604/+subscriptions
More information about the foundations-bugs
mailing list