https://bugs.winehq.org/show_bug.cgi?id=52313
Bug ID: 52313 Summary: Unmapping vDSO leads to performance degradation on Linux Product: Wine Version: 7.0-rc3 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: loader Assignee: wine-bugs@winehq.org Reporter: jinoh.kang.kr@gmail.com CC: leslie_alistair@hotmail.com Distribution: ---
Created attachment 71474 --> https://bugs.winehq.org/attachment.cgi?id=71474 Patches for vDSO/sigpage/stack remapping
Commit f558741fabc116534fa598aa890ffed683a7153b removes vDSO if it conflicts with reserved ranges:
Remove the AT_SYSINFO and AT_SYSINFO_EHDR values if the sysinfo page is in one of our reserved ranges.
However, missing vDSO leads to performance issues on some syscalls (e.g. clock_gettime, gettimeofday) and may even lead to crash when run with some ancient C libraries that does not supply a custom signal restorer.
vDSO pages can clash with reserved ranges especially in a 32-bit address space with address space layout randomization (ASLR) turned on.
Recent versions of the Linux kernel introduced support for mremap()-ping vDSO pages, partly in an effort to support checkpoint restore in userspace (CRIU). Special programs that require specific memory layout constraints (such as Wine preloader) can take advantage of this support to modify the address space to meet its requirements.
Attached patches are currently intended for Wine-Staging.