Created attachment 136961 [details] [review] Patch to #if out the re-exec code when the linker supports ‘-z now’ Hi: While debugging an unrelated matter, I noticed that pulseaudio was re-execing itself very soon after startup. Upon investigating further I discovered this: src/daemon/main.c:398 ============================================================================ #if defined(__linux__) && defined(__OPTIMIZE__) /* Disable lazy relocations to make usage of external libraries more deterministic for our RT threads. We abuse __OPTIMIZE__ as a check whether we are a debug build or not. This all is admittedly a bit snake-oilish. */ if (!getenv("LD_BIND_NOW")) { ⋮ pa_set_env("LD_BIND_NOW", "1"); if ((canonical_rp = pa_realpath(PA_BINARY))) { if ((rp = pa_readlink("/proc/self/exe"))) { if (pa_streq(rp, canonical_rp)) pa_assert_se(execv(rp, argv) == 0) ============================================================================ However pulseaudio is linked with ‘-z now’: vivek@noise:~$ readelf -a $(which pulseaudio) | grep NOW 0x000000000000001e (FLAGS) BIND_NOW 0x000000006ffffffb (FLAGS_1) Flags: NOW PIE So relocations will happen early anyway, making the re-exec (I believe) unnecessary.
Thanks for the patch! I applied it now. When sending patches to any project, I recommend that you use "git format-patch" rather than sending a plain diff. The formatted patch contains a commit message and author information, so the project maintainer doesn't have to manually write those.
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.