[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