New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
umockdev breaks due to systemd changes #69
Comments
gicmo
added a commit
to gicmo/bolt
that referenced
this issue
Jan 25, 2018
gicmo
added a commit
to gicmo/bolt
that referenced
this issue
Jan 29, 2018
martinpitt
added a commit
that referenced
this issue
Feb 9, 2018
Ubuntu 14.04 is becoming too old, and misses changes and breakage from newer system libraries, like issue #69. Move to building and testing in Launchpad buildd chroots for a given Ubuntu release and architecture. Add Travis configuration to use this for the current LTS, the current stable, and the current devel series.
martinpitt
added a commit
that referenced
this issue
Feb 9, 2018
Ubuntu 14.04 is becoming too old, and misses changes and breakage from newer system libraries, like issue #69. Move to building and testing in Launchpad buildd chroots for a given Ubuntu release and architecture. Add Travis configuration to use this for the current LTS, the current stable, and the current devel series.
martinpitt
added a commit
that referenced
this issue
Feb 9, 2018
This reproduces #69. Don't enable it for CI as this is too unreliable in general.
martinpitt
added a commit
that referenced
this issue
Feb 9, 2018
This reproduces #69. Don't enable it for CI as this is too unreliable in general.
martinpitt
added a commit
that referenced
this issue
Feb 9, 2018
This reproduces #69. Don't enable it for CI as this is too unreliable in general.
martinpitt
pushed a commit
to gicmo/umockdev
that referenced
this issue
Feb 9, 2018
A recent change in libudev/systemd in device_set_syspath() changed the pattern of syscalls (by using chase_symlink) from: readlinkat (/sys/devices/XXX) canonicalize_file_name(/sys/devices/XXX) to: open64 (/) openat64 (sys) openat64 (devices) openat64 (XXX) This means it will not trigger trap_path and thus escape our faux sysfs tree. Modified by Martin Pitt: - More precise test for "sys" or "sys/..." - Add unit test for openat() behaviour - Turn into a macro and wrap openat() as well Fixes martinpitt#69
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
As seen in fwupd/fwupd#370 (and also boltd ci).
When stracing you see a change in the syscall pattern:
working (systemd-234-9.fc27):
not working:
setup done here is practically identical to working condition
I suspect the culprit is
chase_symlinks
which usesopenat
on each path component and we are not catching those (yet).I stepped through both processes in the debugger. The critical function is
device_set_syspath
insrc/libsystemd/sd-device/sd-device.c
.In the working condition we get a call
r = readlink_and_canonicalize(_syspath, NULL, &syspath);
which returns-EINVAL
and we get tocanonicalize_file_name
and all is well.In the non-working condition (newer systemd) we get
r = chase_symlinks(_syspath, NULL, 0, &syspath);
returning-ENOENT
and thusdevice_set_syspath
returning-ENODEV
.The breaking change I guess is systemd/systemd-stable@d0467ba (as also found by @ArchangeGabriel in the fwup issue).
The text was updated successfully, but these errors were encountered: