Package: mkchromecast
Version: 0.3.8.1-1
Severity: normal

Dear Maintainer,

mkchromecast always creates a pidfile
    a) in the fixed location /tmp/mkcchromecast.pid
    b) aborts if it can't write that file
    c) doesn't clean up the pidfile on exit.[1]

This breaks the following use cases:
    1) several user accounts using mkchromecast at different points in
       time: /tmp/mkcchromecast.pid owned by the first user to start
       mkchromecast remains and blocks usage by everyone else until /tmp
       is cleared)
    2) using several instances of mkchromecast to stream to several
       devices simultaneously.

Also, afaics mkchromecast doesn't expect to be sent signals from users
anyway[2]: the pidfile is only used to pass a pid around among different
threads of mkchromecast itself.
If that's a correct assesment, then mkchromecast should not use a
pidfile at all, and just handle the pid in python code[3].

Otherwise, the pidfile should be made optional and/or its location
configurable, and the cleanup-on-exit made to work.

Finally,
| if os.path.exists('/tmp/mkchromecast.pid') is True:
|     os.remove('/tmp/mkchromecast.pid')
| f = open('/tmp/mkchromecast.pid', 'wb')
looks fishy to me. Shouldn't opening 'wb' or 'w+b' be enough? (Unless the
file has u-w mode, in which case something is off already.)

thank you for maintaining mkchromecast,
    Jan


[1]
Looking at the source reveals an attempt to delete it, however. I didn't
further investigate why that fails here.
[2]
Besides the usual SIGINT/SIGTERM to tell it to quit.
[3]
I'd like to point out that even a python global variable is "not as
global" as the file /tmp/mkcchromecast.pid ;)

-- System Information:
Debian Release: bullseye/sid
  APT prefers testing
  APT policy: (990, 'testing'), (650, 'testing-debug'), (550, 
'unstable-debug'), (550, 'unstable'), (10, 'experimental-debug'), (10, 
'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 4.19.0-5-amd64 (SMP w/4 CPU cores)
Locale: LANG=C.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8), LANGUAGE=C.UTF-8 
(charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: sysvinit (via /sbin/init)

Versions of packages mkchromecast depends on:
ii  flac                  1.3.2-3
ii  gir1.2-notify-0.7     0.7.7-4
ii  lame                  3.100-2+b1
ii  nodejs                10.15.2~dfsg-2
ii  opus-tools            0.1.10-1
ii  python3               3.7.3-1
ii  python3-flask         1.0.2-3
ii  python3-psutil        5.5.1-1
ii  python3-pychromecast  2.4.0-1
ii  python3-pyqt5         5.11.3+dfsg-1+b3
ii  sox                   14.4.2+git20190427-1
ii  vorbis-tools          1.4.0-11
ii  youtube-dl            2019.07.02-1

mkchromecast recommends no packages.

Versions of packages mkchromecast suggests:
ii  ffmpeg                   7:4.1.3-1
pn  libav-tools              <none>
ii  mkchromecast-alsa        0.3.8.1-1
pn  mkchromecast-pulseaudio  <none>

-- no debconf information

Attachment: signature.asc
Description: PGP signature

Reply via email to