Bug ID 1018399
Summary SUSE-RU-2017:0013-1 causes assert in PID1
Classification openSUSE
Product openSUSE Distribution
Version 13.2
Hardware x86-64
OS SLES 12
Status NEW
Severity Major
Priority P5 - None
Component Basesystem
Assignee bnc-team-screening@forge.provo.novell.com
Reporter wullinger@rz.uni-kiel.de
QA Contact qa-bugs@suse.de
Found By ---
Blocker ---

User-Agent:       Mozilla/5.0 (X11; FreeBSD amd64; rv:50.0) Gecko/20100101
Firefox/50.0
Build Identifier: 

As requested, this is a new bug report wrt to the update supposed to fix bug
909418 [https://bugzilla.suse.com/show_bug.cgi?id=909418]

The "bound device" update seems not to properly handle the case when the device
is already gone by the time the
mount unit is updates.

In particular Dell (and other) servers come with a virtual USB device in their
remote access controllers. These frequently get mounted under /tmp/SECUPD by
the official utilities, usually from /dev/sdb?. However, the device sometimes
seems to disappear while still mounted. As of suse-ru-20170013-1, which imports
commit ebc8968bc0b6fc460099041f5ae1262ca17eeb6e, this results in an
unmanageable machine, because systemd ABRTs in PID 1.

Relevant journal entries:

systemd[11505]: Assertion 'dev' failed at src/core/device.c:301, function
device_is_bound_by_mounts(). Aborting.
FAT-fs (sdc): Volume was not properly unmounted. Some data may be corrupt.
Please run fsck.
systemd[1]: Assertion 'dev' failed at src/core/device.c:301, function
device_is_bound_by_mounts(). Aborting.
systemd[1]: Caught <ABRT>, dumped core as pid 30128.
systemd[1]: Freezing execution.

At this point in time /tmp/SECUPD still appears mounted at can be unmounted.

Problematic code path:

It looks like it is valid for dev to be NULL in device_setup_unit(Manager *m,
struct udev_device *dev, const char *path, bool main). At least there are
various guards with if (dev) in the source.

This is not checked before the (new) call to device_is_bound_by_mounts(), which
itself does assert(dev). As a result, PID1 aborts and the system cannot be
managed any more. I'm not familiar with the new logic, but the fix may be a
simple guard condition inside device_is_bound_by_mounts().



Reproducible: Always

Steps to Reproduce:
1. Have a Dell Server
2. Install SLES 12
3. Have Dell tools installed and started at boot
4. Install suse-ru-20170013-1
Actual Results:  
Systemd asserts in PID1 with

systemd[11505]: Assertion 'dev' failed at src/core/device.c:301, function
device_is_bound_by_mounts(). Aborting.
systemd[1]: Assertion 'dev' failed at src/core/device.c:301, function
device_is_bound_by_mounts(). Aborting.
systemd[1]: Caught <ABRT>, dumped core as pid 30128.
systemd[1]: Freezing execution.

System is unmanagable, must be hard rebooted (systemctl -ff reboot)

Expected Results:  
System remains in good health. Possibly: Filesystem is unmounted.


You are receiving this mail because: