udisksd crashed with SIGSEGV in udisks_daemon_util_check_authorization_sync()
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
PolicyKit |
Fix Released
|
High
|
|||
policykit-1 (Fedora) |
Fix Released
|
Undecided
|
|||
policykit-1 (Ubuntu) |
Fix Released
|
High
|
Unassigned |
Bug Description
I didn't see anything strange.
ProblemType: Crash
DistroRelease: Ubuntu 13.10
Package: udisks2 2.1.0-4
ProcVersionSign
Uname: Linux 3.11.0-11-generic x86_64
ApportVersion: 2.12.5-0ubuntu1
Architecture: amd64
Date: Sun Oct 6 15:01:23 2013
ExecutablePath: /usr/lib/
InstallationDate: Installed on 2013-10-02 (5 days ago)
InstallationMedia: Ubuntu 13.10 "Saucy Salamander" - Beta amd64 (20130925.1)
MachineType: Dell Inc. XPS 2720
MarkForUpload: True
ProcCmdline: /usr/lib/
ProcEnviron:
ProcKernelCmdLine: BOOT_IMAGE=
SegvAnalysis:
Segfault happened at: 0x4348a5: mov (%rax),%ebp
PC (0x004348a5) ok
source "(%rax)" (0x00000000) not located in a known VMA region (needed readable region)!
destination "%ebp" ok
Stack memory exhausted (SP below stack segment)
SegvReason: reading NULL VMA
Signal: 11
SourcePackage: udisks2
StacktraceTop:
?? ()
?? ()
ffi_call_unix64 () from /usr/lib/
ffi_call () from /usr/lib/
g_cclosure_
Title: udisksd crashed with SIGSEGV in ffi_call_unix64()
UpgradeStatus: No upgrade log present (probably fresh install)
UserGroups:
dmi.bios.date: 03/28/2013
dmi.bios.vendor: Dell Inc.
dmi.bios.version: A00
dmi.board.name: 05R2TK
dmi.board.vendor: Dell Inc.
dmi.board.version: A00
dmi.chassis.type: 13
dmi.chassis.vendor: Dell Inc.
dmi.chassis.
dmi.modalias: dmi:bvnDellInc.
dmi.product.name: XPS 2720
dmi.product.
dmi.sys.vendor: Dell Inc.
affects: | udisks2 (Ubuntu) → policykit-1 (Ubuntu) |
Changed in policykit-1 (Ubuntu): | |
importance: | Medium → High |
status: | Confirmed → In Progress |
information type: | Private → Public |
Changed in policykit: | |
importance: | Unknown → High |
status: | Unknown → Fix Released |
Changed in policykit-1 (Fedora): | |
importance: | Unknown → Undecided |
status: | Unknown → Fix Released |
Created attachment 79966
[PATCH] Use GOnce for interface type registration
In certain cases, randomly, udisksd was failing with the following messages:
> (udisksd:10020): GLib-GObject- WARNING **: cannot register existing type `PolkitSubject' CRITICAL **: g_type_ interface_ add_prerequisit e: assertion `G_TYPE_ IS_INTERFACE (interface_type)' failed WARNING **: invalid cast from `PolkitSystemBu sName' to `<invalid>' WARNING **: cannot register existing type `PolkitSubject' WARNING **: cannot register existing type `PolkitSubject' CRITICAL **: g_type_ interface_ add_prerequisit e: assertion `G_TYPE_ IS_INTERFACE (interface_type)' failed CRITICAL **: g_type_ interface_ add_prerequisit e: assertion `G_TYPE_ IS_INTERFACE (interface_type)' failed authority_ check_authoriza tion_sync: assertion `POLKIT_IS_SUBJECT (subject)' failed authority_ check_authoriza tion_sync: assertion `POLKIT_IS_SUBJECT (subject)' failed
> (udisksd:10020): GLib-GObject-
> (udisksd:10020): GLib-GObject-
> (udisksd:10020): GLib-GObject-
> (udisksd:10020): GLib-GObject-
> (udisksd:10020): GLib-GObject-
> (udisksd:10020): GLib-GObject-
> ** (udisksd:10020): CRITICAL **: polkit_
> ** (udisksd:10020): CRITICAL **: polkit_
Further debugging showed missing locking in polkit_ subject_ get_type( ) and potential race explaining the first GObject warning.
The attached patch makes the type registration use modern conventions with GOnce.