[Pkg-alsa-devel] Bug#870396: alsa-lib: fix SIGSEGV on x32 (and a minor typo in the testsuite)
Thorsten Glaser
tg at mirbsd.de
Thu Oct 17 19:01:57 BST 2019
Package: libasound2
Version: 1.1.8-2
Followup-For: Bug #870396
Still exists… updated debdiff anbei.
Verified 1.1.8-2+x32.1 to work.
-- System Information:
Debian Release: bullseye/sid
APT prefers unreleased
APT policy: (500, 'unreleased'), (500, 'buildd-unstable'), (500, 'unstable'), (100, 'experimental')
Architecture: x32 (x86_64)
Foreign Architectures: i386, amd64
Kernel: Linux 5.2.0-3-amd64 (SMP w/4 CPU cores)
Kernel taint flags: TAINT_FIRMWARE_WORKAROUND
Locale: LANG=C, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE=C (charmap=UTF-8)
Shell: /bin/sh linked to /bin/lksh
Init: sysvinit (via /sbin/init)
Versions of packages libasound2:x32 depends on:
ii libasound2-data 1.1.8-2
ii libc6 2.29-2
libasound2:x32 recommends no packages.
Versions of packages libasound2:x32 suggests:
pn libasound2-plugins <none>
-- no debconf information
-------------- next part --------------
diff -Nru alsa-lib-1.1.8/debian/changelog alsa-lib-1.1.8/debian/changelog
--- alsa-lib-1.1.8/debian/changelog 2019-10-11 12:44:01.000000000 +0200
+++ alsa-lib-1.1.8/debian/changelog 2019-10-17 19:52:52.000000000 +0200
@@ -1,3 +1,10 @@
+alsa-lib (1.1.8-2+x32.1) unreleased; urgency=high
+
+ * Non-maintainer upload.
+ * Add patches fixing sound on x32. (Closes: #870396)
+
+ -- Thorsten Glaser <tg at mirbsd.de> Thu, 17 Oct 2019 19:52:52 +0200
+
alsa-lib (1.1.8-2) unstable; urgency=medium
* Get rid of old, unused patches.
diff -Nru alsa-lib-1.1.8/debian/patches/0009-fix-format-strings.patch alsa-lib-1.1.8/debian/patches/0009-fix-format-strings.patch
--- alsa-lib-1.1.8/debian/patches/0009-fix-format-strings.patch 1970-01-01 01:00:00.000000000 +0100
+++ alsa-lib-1.1.8/debian/patches/0009-fix-format-strings.patch 2019-10-17 19:52:23.000000000 +0200
@@ -0,0 +1,73 @@
+# DP: fix long vs. long long confusion when there is a 64-bit time_t
+# DP: on a 32-bit long system, such as all newer 32-bit architectures
+
+--- a/src/pcm/pcm.c
++++ b/src/pcm/pcm.c
+@@ -2257,11 +2257,11 @@ int snd_pcm_status_dump(snd_pcm_status_t
+ {
+ assert(status);
+ snd_output_printf(out, " state : %s\n", snd_pcm_state_name((snd_pcm_state_t) status->state));
+- snd_output_printf(out, " trigger_time: %ld.%06ld\n",
+- status->trigger_tstamp.tv_sec,
+- status->trigger_tstamp.tv_nsec / 1000);
+- snd_output_printf(out, " tstamp : %ld.%06ld\n",
+- status->tstamp.tv_sec, status->tstamp.tv_nsec / 1000);
++ snd_output_printf(out, " trigger_time: %lld.%06ld\n",
++ (long long)status->trigger_tstamp.tv_sec,
++ (long)status->trigger_tstamp.tv_nsec / 1000L);
++ snd_output_printf(out, " tstamp : %lld.%06ld\n",
++ (long long)status->tstamp.tv_sec, (long)status->tstamp.tv_nsec / 1000L);
+ snd_output_printf(out, " delay : %ld\n", (long)status->delay);
+ snd_output_printf(out, " avail : %ld\n", (long)status->avail);
+ snd_output_printf(out, " avail_max : %ld\n", (long)status->avail_max);
+--- a/test/latency.c
++++ b/test/latency.c
+@@ -325,12 +325,12 @@ void setscheduler(void)
+ printf("!!!Scheduler set to Round Robin with priority %i FAILED!!!\n", sched_param.sched_priority);
+ }
+
+-long timediff(snd_timestamp_t t1, snd_timestamp_t t2)
++long long timediff(snd_timestamp_t t1, snd_timestamp_t t2)
+ {
+- signed long l;
++ signed long long l;
+
+ t1.tv_sec -= t2.tv_sec;
+- l = (signed long) t1.tv_usec - (signed long) t2.tv_usec;
++ l = (signed long long) t1.tv_usec - (signed long long) t2.tv_usec;
+ if (l < 0) {
+ t1.tv_sec--;
+ l = 1000000 + l;
+@@ -682,10 +682,10 @@ int main(int argc, char *argv[])
+ snd_pcm_nonblock(phandle, !block ? 1 : 0);
+ if (ok) {
+ #if 1
+- printf("Playback time = %li.%i, Record time = %li.%i, diff = %li\n",
+- p_tstamp.tv_sec,
++ printf("Playback time = %lli.%i, Record time = %lli.%i, diff = %lli\n",
++ (long long)p_tstamp.tv_sec,
+ (int)p_tstamp.tv_usec,
+- c_tstamp.tv_sec,
++ (long long)c_tstamp.tv_sec,
+ (int)c_tstamp.tv_usec,
+ timediff(p_tstamp, c_tstamp));
+ #endif
+--- a/test/queue_timer.c
++++ b/test/queue_timer.c
+@@ -99,11 +99,11 @@ main(int argc ATTRIBUTE_UNUSED, char **a
+ normalize(&diffdiff);
+ prevdiff = diff;
+
+- fprintf(stderr, " real time: %12ld sec %8ld usec\nqueue time: %12ld sec %8ld usec\n diff: %12ld sec %8ld usec\n diffdiff: %12ld sec %8ld usec\n",
+- tv.tv_sec, tv.tv_usec,
+- (long)rtime->tv_sec, (long)rtime->tv_nsec / 1000,
+- diff.tv_sec, diff.tv_usec,
+- (long)diffdiff.tv_sec, (long)diffdiff.tv_usec);
++ fprintf(stderr, " real time: %12lld sec %8ld usec\nqueue time: %12lld sec %8ld usec\n diff: %12lld sec %8ld usec\n diffdiff: %12lld sec %8ld usec\n",
++ (long long)tv.tv_sec, (long)tv.tv_usec,
++ (long long)rtime->tv_sec, (long)rtime->tv_nsec / 1000,
++ (long long)diff.tv_sec, (long)diff.tv_usec,
++ (long long)diffdiff.tv_sec, (long)diffdiff.tv_usec);
+
+ if (diffdiff.tv_usec > 5000 ||
+ diffdiff.tv_usec < -5000) {
diff -Nru alsa-lib-1.1.8/debian/patches/0011-distinguish-x32-from-amd64.patch alsa-lib-1.1.8/debian/patches/0011-distinguish-x32-from-amd64.patch
--- alsa-lib-1.1.8/debian/patches/0011-distinguish-x32-from-amd64.patch 1970-01-01 01:00:00.000000000 +0100
+++ alsa-lib-1.1.8/debian/patches/0011-distinguish-x32-from-amd64.patch 2019-10-17 19:52:23.000000000 +0200
@@ -0,0 +1,14 @@
+# DP: fix segmentation fault coming from this using amd64 assembly code
+# DP: on x32 systems
+
+--- a/src/pcm/pcm_dmix.c
++++ b/src/pcm/pcm_dmix.c
+@@ -145,7 +145,7 @@ static void dmix_server_free(snd_pcm_dir
+ #include "pcm_dmix_generic.c"
+ #if defined(__i386__)
+ #include "pcm_dmix_i386.c"
+-#elif defined(__x86_64__)
++#elif defined(__x86_64__) && !defined(__ILP32__)
+ #include "pcm_dmix_x86_64.c"
+ #else
+ #ifndef DOC_HIDDEN
diff -Nru alsa-lib-1.1.8/debian/patches/series alsa-lib-1.1.8/debian/patches/series
--- alsa-lib-1.1.8/debian/patches/series 2019-10-11 12:11:55.000000000 +0200
+++ alsa-lib-1.1.8/debian/patches/series 2019-10-17 19:52:35.000000000 +0200
@@ -1,3 +1,5 @@
0001-Enabled-extended-namehints-in-alsa.conf.patch
0002-Add-a-configuration-for-tegra-alc5632-based-cards.patch
0003-conf-ucm-sof-skl_hda_card-backport.patch
+0009-fix-format-strings.patch
+0011-distinguish-x32-from-amd64.patch
More information about the Pkg-alsa-devel
mailing list