Bug#839101: cowdancer: Keep open() async-signal-safe

Jack Bates wdz7eo at nottheoilrig.com
Wed Sep 28 21:52:57 UTC 2016


Package: cowdancer
Version: 0.81
Severity: normal

Dear Maintainer,

open() is supposed to be async-signal-safe [1], however cowdancer's
open() calls dlsym() [2] which calls calloc() [3] which isn't AS-safe.
This caused me some grief [4], in combination with TCMalloc and
Chromium.

As I see it, to keep open() AS-safe, cowdancer can't call dlsym() from
open() (if possible). That means either:

A) Call dlsym() early, before anything calls open(). Not possible
   because even if you managed to call dlsym() before anything else,
   dlsym() itself might call open() before it was done initializing :-(

B) Avoid dlsym() altogether. What are the options in this case?

   1) Use sys_open() instead of dlsym(RTLD_NEXT, "open)

   2) ???

[1] http://man7.org/linux/man-pages/man7/signal.7.html
    "Async-signal-safe functions"
[2] https://anonscm.debian.org/git/pbuilder/cowdancer.git/tree/cowdancer.c#n182
[3] https://sourceware.org/git/?p=glibc.git;a=blob;f=dlfcn/dlerror.c;h=41b2bd6bf29be5f61affc5e750775ab2f64ee4b0;hb=HEAD#l141
[4] https://groups.google.com/a/chromium.org/d/msg/gn-dev/uYMNbQp9FUg/N9b8-SfEGAAJ


-- System Information:
Debian Release: stretch/sid
  APT prefers testing-debug
  APT policy: (500, 'testing-debug'), (500, 'testing')
Architecture: amd64 (x86_64)

Kernel: Linux 4.6.0-1-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_CA.UTF-8, LC_CTYPE=en_CA.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages cowdancer depends on:
ii  libc6        2.23-5
ii  libncurses5  6.0+20160625-1
ii  libtinfo5    6.0+20160625-1

cowdancer recommends no packages.

cowdancer suggests no packages.

-- no debconf information



More information about the Pbuilder-maint mailing list