perl crashed with SIGABRT in _dbus_abort()
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
xdg-utils (Debian) |
Fix Released
|
Unknown
|
|||
xdg-utils (Ubuntu) |
Fix Released
|
High
|
Iain Lane | ||
Bionic |
Fix Released
|
High
|
Iain Lane | ||
Cosmic |
Fix Released
|
High
|
Iain Lane |
Bug Description
[ Description ]
When xdg-screensaver suspend <wid> refers to a window with invalid UTF-8 in its title, it will spawn a perl process that crashes with an assertion:
dbus[19455]: arguments to dbus_message_
This is normally a bug in some application using the D-Bus library.
[ Fix ]
Use decode() from the Encode module to replace invalid character sequences with U+FFFD, the replacement symbol. This is not a new dependency as Encode has been a perl core module since 5.8.
[ QA ]
I don't know how to get a window with such a title, so we can do two things.
1)
1. $ sudo -e $(which xdg-screensaver) # hack the script
2. Find the line "# Inhibit idle detection (flags = 8) with window name and ID."
3. Find the } on its own above that. Insert a new line afterwards and set the window name to be the same as the one in this bug, by pasting the code
$window_name = "\253\062\065 Meter fehlten bis zur Katastrophe\273 - News Panorama: Vermischtes - tagesanzeiger.ch - Mozilla Firefox";
4. Save and exit
5. $ xwininfo
6. click some window, and copy the "Window id", which will be 0x<something>
7. $ xdg-screensaver suspend <that window id>
In the bad case (before this bug is fixed) it should crash, and in the good case it should work.
8. Undo what you just did by running $ xdg-screensaver resume <that window id>
2)
Observe that the error bucket
https:/
has a reduction in report rate with the new versions.
[ Regression potential ]
If the code is bad then the window name passed to Inhibit() could be wrong. That shouldn't matter too much.
If it is really bad then the program might crash for everybody and we'll see an increase in errors.
[ Original description ]
Errors Bucket
-------------
https:/
crashed after launching the software updater
ProblemType: CrashDistroRelease: Ubuntu 18.04
Package: perl-base 5.26.1-4
ProcVersionSign
Uname: Linux 4.14.0-16-generic x86_64
ApportVersion: 2.20.8-0ubuntu6
Architecture: amd64
CurrentDesktop: ubuntu:GNOME
Date: Sun Jan 14 13:30:52 2018
ExecutablePath: /usr/bin/perl
InstallationDate: Installed on 2017-12-28 (17 days ago)
InstallationMedia: Ubuntu 18.04 LTS "Bionic Beaver" - Alpha amd64 (20171201)
Signal: 6SourcePackage: perl
StacktraceTop:
_dbus_abort () from /lib/x86_
_dbus_
dbus_message_
?? () from /usr/lib/
Perl_pp_entersub ()
Title: perl crashed with SIGABRT in _dbus_abort()
UpgradeStatus: No upgrade log present (probably fresh install)
UserGroups: adm cdrom dip lpadmin lxd plugdev sambashare sudo
Changed in perl (Ubuntu): | |
importance: | Medium → High |
description: | updated |
tags: |
added: regression-release removed: package-from-proposed |
Changed in xdg-utils (Ubuntu): | |
assignee: | nobody → Canonical Desktop Team (canonical-desktop-team) |
tags: | added: rls-cc-incoming |
Changed in xdg-utils (Ubuntu): | |
assignee: | Canonical Desktop Team (canonical-desktop-team) → Iain Lane (laney) |
tags: |
added: rls-cc-tracking removed: rls-cc-incoming |
Changed in perl (Ubuntu Cosmic): | |
status: | Confirmed → Invalid |
Changed in xdg-utils (Ubuntu Bionic): | |
status: | New → In Progress |
assignee: | nobody → Iain Lane (laney) |
description: | updated |
description: | updated |
affects: | perl (Debian) → xdg-utils (Debian) |
Changed in xdg-utils (Ubuntu Bionic): | |
importance: | Undecided → High |
no longer affects: | perl (Ubuntu) |
no longer affects: | perl (Ubuntu Bionic) |
no longer affects: | perl (Ubuntu Cosmic) |
Changed in xdg-utils (Debian): | |
status: | Unknown → Confirmed |
Changed in xdg-utils (Debian): | |
status: | Confirmed → Fix Released |
StacktraceTop: ./dbus/ dbus-sysdeps. c:93 warn_check_ failed (format= format@ entry=0x7f67696 eb7c8 "arguments to %s() were incorrect, assertion \"%s\" failed in file %s line %d.\nThis is normally a bug in some application using the D-Bus library.\n") at ../../. ./dbus/ dbus-internals. c:281 warn_return_ if_fail (function= function@ entry=0x7f67696 ea1b0 <__func__.5319> "dbus_message_ iter_append_ basic", assertion= assertion@ entry=0x7f67696 e94b8 "_dbus_ check_is_ valid_utf8 (*string_p)", file=file@ entry=0x7f67696 e9a1d "../../ ../dbus/ dbus-message. c", line=line@ entry=2754) at ../../. ./dbus/ dbus-internals. c:936 iter_append_ basic (iter=0x55e5b0b a6530, type=type@ entry=115, value=value@ entry=0x7ffd7fe 845b0) at ../../. ./dbus/ dbus-message. c:2754 _DBus__ Binding_ _Iterator_ append_ string (my_perl=<optimized out>, cv=<optimized out>) at DBus.xs:1543
_dbus_abort () at ../../.
_dbus_
_dbus_
dbus_message_
XS_Net_