[Pkg-libburnia-devel] Bug#946679: cdrskin in Debian 10 cannot burn usual Audio CD sessions but spoils CD-R

Thomas Schmitt scdbackup at gmx.net
Fri Dec 13 16:03:41 GMT 2019


Package: cdrskin
Version: 1.5.0-1
Severity: important
Tags: upstream

Dear Release Team,

due to a hapless bug fix before upstream release of cdrkin-1.5.0 the program
lost its ability to burn multiple tracks in one session. Multiple tracks
are the most expectable situation with burning Audio CDs.
Regrettably this is the version in current "stable".

The offending upstream commit is very simple:
  https://dev.lovelyhq.com/libburnia/libburn/commit/84fad99ebaa8cb9e16a8939bb2449073038924c1
It was supposed to fix a rare bug, but created a common one.

The symptoms are
- If the first track is smaller than the fifo buffer (default 4 MiB), then
  the burn run hangs with waiting for the fifo to get full.
- If the first track can fill the fifo completely, then it gets written
  very slowly. Burning hangs forever at the end of the first track.
  The affected medium is not blank any more. In case of CD-R it is used up
  afterwards.

To reproduce the problem, i booted  debian-live-10.0.0-amd64-xfce.iso  and
did

  # Install
  sudo apt-get update
  sudo apt-get install cdrskin

  # Create dummy input files (CD-DA sector size is 2352 bytes)
  dd if=/dev/zero bs=2352 count=5000 of=dummy_track1
  dd if=/dev/zero bs=2352 count=6000 of=dummy_track2
  dd if=/dev/zero bs=2352 count=7000 of=dummy_track3

  # Let cdrskin misburn a CD-RW, "blank=as_needed" will erase it before burn
  cdrskin -v dev=/dev/sr0 blank=as_needed -eject -audio dummy_track[1-3]

The cdrskin run has finally to be interrupted by Ctrl+C.
After about 30 to 60 seconds, the drive is released and cdrskin ends.

The older releases of Debian are not affected, because the bug was introduced
after upstream version 1.4.6, which is in Debian 9.

The freshly uploaded version 1.5.2 got a last-minute patch to fix the problem:
  https://salsa.debian.org/optical-media-team/libburn/raw/master/debian/patches/01-ban-o_direct-to-fix-cdrskin-multi-track.patch
It reverts the bad change and forcefully disables the exotic configuration
of using O_DIRECT in libburn, which that change was meant to fix.
Meanwhile it migrated to testing.

The O_DIRECT configuration of libburn does not happen in the production of
Debian binary package libburn4.
So my proposal for a patch in stable is even more sparse than in testing
and avoids any change in libburn4, which is in use with Xfburn, Brasero,
and xorriso.

I created a patched cdrskin_1.5.0-2+deb10u1_amd64.deb (by debuild -S and
debuild -b) and tested on Debian 10 Live by above procedure, plus
  sudo dpkg -i cdrskin_1.5.0-2+deb10u1_amd64.deb
that it burns multiple tracks with the expectable speed and result.

==========================================================================
$ debdiff libburn_1.5.0-1.dsc libburn_1.5.0-2+deb10u1.dsc
diff -Nru libburn-1.5.0/debian/changelog libburn-1.5.0/debian/changelog
--- libburn-1.5.0/debian/changelog      2018-09-24 10:48:38.000000000 +0200
+++ libburn-1.5.0/debian/changelog      2019-11-27 16:17:00.000000000 +0100
@@ -1,3 +1,14 @@
+libburn (1.5.0-2+deb10u1) UNRELEASED; urgency=low
+  * Patch taken from upstream development
+    + cdrskin multi-track burning was slow and stalled after track 1.
+      Regression introduced in version 1.5.0 by commit 84fad99, 2018.02.05,
+      which should fix a bug with O_DIRECT track reading.
+      Debian never enabled O_DIRECT, so 84fad99 was never desirable.
+      The patch reverts the upstream commit to bring the fifo code of cdrskin
+      back to the state in Debian 9 and Debian 8.
+
+ -- Thomas Schmitt <scdbackup at gmx.net>  Wed, 27 Nov 2019 16:17:00 +0100
+
 libburn (1.5.0-1) UNRELEASED; urgency=low

   * New upstream release
diff -Nru libburn-1.5.0/debian/patches/01-fix-cdrskin-multi-track.patch libburn-
1.5.0/debian/patches/01-fix-cdrskin-multi-track.patch
--- libburn-1.5.0/debian/patches/01-fix-cdrskin-multi-track.patch       1970-01-
01 01:00:00.000000000 +0100
+++ libburn-1.5.0/debian/patches/01-fix-cdrskin-multi-track.patch       2019-11-
27 16:17:00.000000000 +0100
@@ -0,0 +1,18 @@
+Description: Bug fix: cdrskin multi-track burning was slow and stalled
+ after track 1.
+ Regression introduced in version 1.5.0 by commit 84fad99, 2018.02.05,
+ which should fix a bug with O_DIRECT track reading.
+ This patch reverts the upstream commit to bring the fifo code of cdrskin back
+ to the state of cdrskin-1.4.6 in Debian 9 and cdrskin-1.3.2 in Debian 8.
+Author: Thomas Schmitt <scdbackup at gmx.net>
+
+--- a/cdrskin/cdrfifo.c
++++ b/cdrskin/cdrfifo.c
+@@ -28,7 +28,6 @@
+ #ifndef Cdrfifo_standalonE
+ /* for burn_os_alloc_buffer() */
+ #include "../libburn/libburn.h"
+-#define Libburn_has_open_trac_srC 1
+ #endif
+
+ #include "cdrfifo.h"
diff -Nru libburn-1.5.0/debian/patches/series libburn-1.5.0/debian/patches/series
--- libburn-1.5.0/debian/patches/series 2018-04-03 19:59:27.000000000 +0200
+++ libburn-1.5.0/debian/patches/series 2019-11-27 16:17:00.000000000 +0100
@@ -0,0 +1,2 @@
+01-fix-cdrskin-multi-track.patch
+
==========================================================================

-- System Information:
Debian Release: buster
Architecture: amd64 (x86_64)

(I write this on a Sid system. But as said, i tested on Debian 10 Live
 and the problem is in upstream code, where it is fixed similarly now.)


Have a nice day :)

Thomas



More information about the Pkg-libburnia-devel mailing list