[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#993809: bullseye-pu: package segemehl/0.3.4-3+deb11u1 (Pre-approval)



Package: release.debian.org
Severity: normal
Tags: bullseye
User: release.debian.org@packages.debian.org
Usertags: pu
X-Debbugs-Cc: nilesh@debian.org

[ Reason ]
The package segfauls to !amd64 and !i386 architectures. The version in
bullseye does not have autopkgtests, when we added those and uploaded
_after_ the bullseye release, tests were segfaulting on arm64, ppc64el
and armhf. Note that there has been no new upstream release, just test
addition with a few cosmetics.
Unfortunantely, the failing logs of the 0.3.4-4 version have disappeared
from here[1]
But, trying on a arm64 porter box confirms the experience.

 % ./segemehl -x index.idx -d seq1.fa
[SEGEMEHL] Mon Sep  6 18:29:55 2021: reading database sequences.
zsh: segmentation fault  ./segemehl -x index.idx -d seq1.fa

% ./segemehl -i index.idx -d seq1.fa -q myseq.fa > mymap.sam
[SEGEMEHL] Mon Sep  6 18:44:08 2021: reading queries in 'myseq.fa'.
...............this keeps running forever

This has been fixed in unstable with the relevant patch, and upload[2]
0.3.4-5 and it migrated to testing after everything passes

[1]: https://ci.debian.net/data/autopkgtest/unstable/arm64/s/segemehl/
[2]: https://tracker.debian.org/news/1251311/accepted-segemehl-034-5-source-into-unstable/

Since I noticed and fixed it before any bug was filed, there does not
exist a corresponding RC bug in the database. Let me know if I should
file one and process BTS commands on that.

[ Impact ]
Users will find a broken segfaulting package on !amd64 and !i386
machines

[ Tests ]
Autopkgtests have been added. I've manually run them on porter boxes,
and it looks good (as it should)
The revision in unstable also has tests passing

https://ci.debian.net/data/autopkgtest/unstable/arm64/s/segemehl/14839955/log.gz

[ Risks ]
Being a leaf package with a not-very-high popcon, risk is pretty low

[ Checklist ]
  [x] *all* changes are documented in the d/changelog
  [x] I reviewed all changes and I approve them
  [x] attach debdiff against the package in stable
  [x] the issue is verified as fixed in unstable
diff -Nru segemehl-0.3.4/debian/changelog segemehl-0.3.4/debian/changelog
--- segemehl-0.3.4/debian/changelog	2021-02-18 15:14:26.000000000 +0530
+++ segemehl-0.3.4/debian/changelog	2021-09-06 23:46:30.000000000 +0530
@@ -1,3 +1,11 @@
+segemehl (0.3.4-3+deb11u1) bullseye; urgency=medium
+
+  * d/p/arm64.patch: Fix autopkgtest segaults on !amd64 and !i386
+    + Change the signed-ness for needed chars to fix segfault
+  * Add autopkgtests
+
+ -- Nilesh Patra <nilesh@debian.org>  Mon, 06 Sep 2021 23:46:30 +0530
+
 segemehl (0.3.4-3) unstable; urgency=medium
 
   * Team Upload.
diff -Nru segemehl-0.3.4/debian/examples segemehl-0.3.4/debian/examples
--- segemehl-0.3.4/debian/examples	1970-01-01 05:30:00.000000000 +0530
+++ segemehl-0.3.4/debian/examples	2021-09-06 23:45:58.000000000 +0530
@@ -0,0 +1 @@
+debian/tests/data/*
\ No newline at end of file
diff -Nru segemehl-0.3.4/debian/patches/arm64.patch segemehl-0.3.4/debian/patches/arm64.patch
--- segemehl-0.3.4/debian/patches/arm64.patch	1970-01-01 05:30:00.000000000 +0530
+++ segemehl-0.3.4/debian/patches/arm64.patch	2021-09-06 23:43:50.000000000 +0530
@@ -0,0 +1,75 @@
+Description: Change the signed-ness for several chars to fix segfault
+Author: Nilesh Patra <nilesh@debian.org>
+Last-Update: 2021-08-24
+--- a/libs/biofiles.c
++++ b/libs/biofiles.c
+@@ -1916,7 +1916,7 @@
+     Uint max, Uint *minlen, Uint *maxlen, unsigned char *minq, unsigned char *maxq) 
+ {
+ 
+-  char ch;
++  signed char ch;
+   char idchar=0;
+   int ret=0;
+   off_t curseqoffset, lastindexoffset=0;
+@@ -2515,7 +2515,7 @@
+ {
+ 
+   FILE *fp;
+-  char ch;
++  signed char ch;
+   char *buffer;
+   char *descrbuffer = NULL;
+   char *seqbuffer = NULL;
+--- a/libs/fileio.c
++++ b/libs/fileio.c
+@@ -498,7 +498,7 @@
+ void
+ bl_freplacestr(char *filename, char *str, Uint len, char stop){
+   int i = 0;
+-  char ch;
++  signed char ch;
+   FILE *fp;
+ 
+   fp = fopen(filename, "rb+");  
+@@ -523,7 +523,8 @@
+ 
+ int
+ bl_fgets(void *space, FILE *fp, char **str) {
+-  char ch, *buffer;
++  signed char ch;
++  char *buffer;
+   size_t buffersize = MAXBUFFERSIZE;
+   size_t len = 0;
+ 
+@@ -549,7 +550,7 @@
+ char* 
+ readfile(void* space, char* filename, size_t* strlen) {
+ 
+-  char ch;
++  signed char ch;
+   char *buffer;
+   FILE *fp;
+   size_t buffersize = MAXBUFFERSIZE;
+--- a/libs/merge.c
++++ b/libs/merge.c
+@@ -596,7 +596,7 @@
+   if (!file->complete && !file->eof){
+ 
+ #ifndef FILEBUFFEREDMERGE
+-    char ch;
++    signed char ch;
+     Uint buffersize = 1024;
+     buffer = ALLOCMEMORY(NULL, NULL, char, buffersize);
+     len = 0;
+--- a/libs/samheader.c
++++ b/libs/samheader.c
+@@ -460,7 +460,7 @@
+ {
+   FILE *fp;
+   off_t offset = 0;
+-  char ch;
++  signed char ch;
+   char *buffer;
+   //  char *descrbuffer = NULL;
+   //  char *seqbuffer = NULL;
diff -Nru segemehl-0.3.4/debian/patches/series segemehl-0.3.4/debian/patches/series
--- segemehl-0.3.4/debian/patches/series	2021-02-18 15:04:21.000000000 +0530
+++ segemehl-0.3.4/debian/patches/series	2021-09-06 23:41:48.000000000 +0530
@@ -1,2 +1,3 @@
 rpath.patch
 cross.patch
+arm64.patch
diff -Nru segemehl-0.3.4/debian/tests/control segemehl-0.3.4/debian/tests/control
--- segemehl-0.3.4/debian/tests/control	1970-01-01 05:30:00.000000000 +0530
+++ segemehl-0.3.4/debian/tests/control	2021-09-06 23:45:58.000000000 +0530
@@ -0,0 +1,3 @@
+Tests: run-unit-test
+Depends: @
+Restrictions: allow-stderr
diff -Nru segemehl-0.3.4/debian/tests/data/myseq.fa segemehl-0.3.4/debian/tests/data/myseq.fa
--- segemehl-0.3.4/debian/tests/data/myseq.fa	1970-01-01 05:30:00.000000000 +0530
+++ segemehl-0.3.4/debian/tests/data/myseq.fa	2021-09-06 23:45:20.000000000 +0530
@@ -0,0 +1,2 @@
+>myseq
+ATGCGACTCAGACGACGACGACGACGAGACTAAGCAGACATCAGCAGACGACGACGCATACGACGATA
\ No newline at end of file
diff -Nru segemehl-0.3.4/debian/tests/data/seq1.fa segemehl-0.3.4/debian/tests/data/seq1.fa
--- segemehl-0.3.4/debian/tests/data/seq1.fa	1970-01-01 05:30:00.000000000 +0530
+++ segemehl-0.3.4/debian/tests/data/seq1.fa	2021-09-06 23:45:20.000000000 +0530
@@ -0,0 +1,2 @@
+>index1
+ATGCATGCATGCATTTAGAGACAGCAGACGATACGACTACACAGCATCAACGACATACGACATCAGACGAACAAAAAAAAAAAAAGATCATCAGAATGGCATGGCATGACTCGACATCGACATCAGACATCAGAAATCAGACTAAGCATAGCATAGAATCAATACGACGACATAGATAGATAGATAAGCAGACTAAGCATACAGCACATAGCATAGACGAATAGCATACGACATAGAATAGATATCAGCA
\ No newline at end of file
diff -Nru segemehl-0.3.4/debian/tests/data/seq2.fa segemehl-0.3.4/debian/tests/data/seq2.fa
--- segemehl-0.3.4/debian/tests/data/seq2.fa	1970-01-01 05:30:00.000000000 +0530
+++ segemehl-0.3.4/debian/tests/data/seq2.fa	2021-09-06 23:45:20.000000000 +0530
@@ -0,0 +1,2 @@
+>index2
+ATGCTACGACGACGACGAGAAGAGAGAGAAAAAAAAAAATACGACATCAGACTACGACATACTACAGACTACAGCATCAGAATAG
\ No newline at end of file
diff -Nru segemehl-0.3.4/debian/tests/run-unit-test segemehl-0.3.4/debian/tests/run-unit-test
--- segemehl-0.3.4/debian/tests/run-unit-test	1970-01-01 05:30:00.000000000 +0530
+++ segemehl-0.3.4/debian/tests/run-unit-test	2021-09-06 23:45:58.000000000 +0530
@@ -0,0 +1,20 @@
+#!/bin/bash
+set -e
+
+pkg=segemehl
+
+export LC_ALL=C.UTF-8
+if [ "${AUTOPKGTEST_TMP}" = "" ] ; then
+  AUTOPKGTEST_TMP=$(mktemp -d /tmp/${pkg}-test.XXXXXX)
+  trap "rm -rf ${AUTOPKGTEST_TMP}" 0 INT QUIT ABRT PIPE TERM
+fi
+
+cp -a /usr/share/doc/${pkg}/examples/* "${AUTOPKGTEST_TMP}"
+
+cd "${AUTOPKGTEST_TMP}"
+
+#do_stuff_to_test_package#
+segemehl -x index.idx -d seq1.fa
+segemehl -i index.idx -d seq1.fa -q myseq.fa > mymap.sam
+segemehl -S -i index.idx -d seq1.fa -q seq2.fa > my.sngl.bed
+[ -s "mymap.sam" ] && [ -s "index.idx" ] && [ -s "my.sngl.bed" ] || exit 1 && echo "PASS Test"
\ No newline at end of file

Reply to: