Linux vsyscall deprecated, may still be used in some project apps

Message boards : Questions and problems : Linux vsyscall deprecated, may still be used in some project apps
Message board moderation

To post messages, you must log in.


Send message
Joined: 28 Jun 14
Posts: 27
United States
Message 79662 - Posted: 18 Jul 2017, 4:51:15 UTC

An alert to Linux hosts... I've updated to a 4.9 kernel (Debian) and discovered that support of the "vsyscall" kernel function is being phased out, i.e. strongly discouraged, but is still "supported" via legacy emulation code with an appropriate kernel compile option. Only some project applications still use "vsyscall." If they do then the kernel will need the CONFIG_LEGACY_VSYSCALL_EMULATE setting. (The other choices are: NATIVE or NONE.) It is likely, but not a sure thing, that distribution kernel images will have that emulation setting. The failure symptom may be a little misleading: computation error, output file absent. There is nothing wrong with the file/directory permissions; rather, the application "seg faults" very early, no output file was ever created, and boincmgr (correctly) reports the output file absent. The "seg fault" results from a vsyscall to a kernel that does not have that capability or an emulation of it. The error is reported in the kern.log and messages. Only limited experience to report:
Asteroids@home (CPU) o.k.; NFS@home (CPU) FAILS; Einstein@home (GPU) o.k.; Einstein@home (CPU) FAILS.
[boinc 7.6.33 / Linux 4.9.30 / GTX 750Ti / AMD 7 1700]
ID: 79662 · Report as offensive
Volunteer tester
Help desk expert

Send message
Joined: 5 Mar 08
Posts: 263
Message 79677 - Posted: 19 Jul 2017, 1:52:26 UTC

This was brought up some time ago on the Einstein forums. See this thread

I have a couple of Ryzen's doing gravity wave work without any issue at the moment, running Debian Stretch.
ID: 79677 · Report as offensive
Volunteer developer
Volunteer tester

Send message
Joined: 4 Jul 12
Posts: 321
Message 79690 - Posted: 20 Jul 2017, 13:12:54 UTC

This is a problem for projects that use applications that are built using libc 2.13 or earlier. Those don't support the non-vsyscall functions. Those are mainly time() and gettimeofday() that are used in the app.

The solution on the project side is to rebuilt using a libc 2.14 or newer. An ideal build host for this would be Ubuntu 12.04 LTS which has libc 2.15.

The current Debian stretch doesn't have this problem (they enabled vsyscalls again while stretch was still testing) but the next version (buster, now testing) comes with kernel 4.11 which has vsyscalls disabled again.

The solution on the volunteer side is to enable vsyscalls via kernel option "vsyscall=emulate". How to change this differs for each distribution on Debian it is in /etc/default/grub.
ID: 79690 · Report as offensive

Message boards : Questions and problems : Linux vsyscall deprecated, may still be used in some project apps

Copyright © 2020 University of California. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation.