Package: release.debian.org Severity: normal Tags: bullseye User: [email protected] Usertags: pu X-Debbugs-Cc: [email protected]
[ 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 <[email protected]> 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 <[email protected]> +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

