TL;DR:
- you can use the pbuilder + static qemu setup to debug
- qemu/libvirt throw no error
- the tests do not "consider" the unsupported syscall
- I found to get just the same issues on Artful but with more context 
indicating that missing syscall
- You can use the setup described above (or sbuild) to debug further as there 
are 1-2 issues which seem to have other reasons e.g. "Xapian exception: read 
only files"
- the testcases might need several fixes, but one of them is surely to test not 
only if gdb is installed, but if it is working.

---

Hi Gianfranco,
Lacking a working arm system atm to test any further I tried this in qemu 
static.
Might be an odd setup, but I had it around from evrifying another bug.

pbuilder-dist artful armhf create
pbuilder-dist artful armhf login
apt install ubuntu-dev-tools vim-nox fakeroot
pull-lp-source notmuch
# enable deb-src in /etc/apt/sources.list
apt update
apt-get build-dep notmuch
cd notmuch
debuild -uc -us

(tried the same in Trusty with the old version of notmuch)
Both had a few testcase errors - but not exactly the same you had.

But after the build running dh_auto_test manually in that dir shows more
output that can help.

With that approach I think I saw some issues that might be related as with 
local dh_autp_test you get mroe details.
- Xapian exception: read only files - that could be your DB errors

I quite often saw tests skipped for gdb missing, on an older build environment 
that was around.
So for a test I installed gdb and reran the tests and found what might be 
related.
Gdb in the virtual environment (at least my qemu-statis-armhf one) could not 
work due to an Unsupported syscall.
The retval of gdb in that was 255, and that reminded me of your log:
FAIL   success exit with --keep when add_message returns READ_ONLY_DATABASE
        --- T070-insert.33.expected     2016-08-31 07:10:21.960346786 +0000
        +++ T070-insert.33.output       2016-08-31 07:10:21.960346786 +0000
        @@ -1 +1 @@
        -0
        +255
While I saw:
 FAIL   success exit with --keep when add_message returns READ_ONLY_DATABASE
        exit code 255, expected 0 gdb --batch-silent --return-child-result      
     -ex 'set args insert --keep < 
/usr/notmuch-0.25/test/tmp.T070-insert/mail/msg-018'       -x 
index-file-READ_ONLY_DATABASE.gdb notmuch
qemu: Unsupported syscall: 26

Not exactly the same, but the question is what is throwing the 255 in
your case, but as I said my setup seems insufficient for that. Maybe the
"full" qemu running arm on arm supports that system call but fails
differently?

I wondered, in your buildlog [1] I see shell syntax errors like:
./T380-atomicity.sh: line 79: ((: i < : syntax error: operand expected (error 
token is "< ")
But when running locally (before installing gdb) I saw:
 missing prerequisites: gdb(1)
 SKIP   all tests in T380-atomicity
With gdb installed I get exactly your error on the "./T380-atomicity.sh: line 
79:" case.
I also saw that at least back in Yakkety gdb was a build dep but with various 
arch restrictions:
Build-Depends: gdb-minimal, gdb [!s390x !ia64 !armel !ppc64el !mips !mipsel 
!mips64el]
Build-Conflicts: ruby1.8, gdb-minimal, gdb [s390x ia64 armel ppc64el mips 
mipsel mips64el]

Note - the same on a Trusty pbuilder target instead of Artful ran all but one 
test.
So maybe it is neither LP, nor qemu but some of the dependencies that broke 
this?

Your build log I compared to was actually Yakkety so I picked that finally to 
check if this is fully reproducible.
There gdb could be around by default (just as it was in trusty for me) due to 
dependencies.
I slimlined the repro to get less extra deps:
pbuilder-dist yakkety armhf create
pbuilder-dist yakkety armhf login
# enable deb-src in /etc/apt/sources.list
apt update
apt-get source notmuch
apt-get build-dep notmuch
apt install fakeroot devscripts
cd notmuch
debuild -uc -us

And here things confirmed - it was the unsupported system call and on yakktey 
the output matches your case:
T060-count: Testing "notmuch count" for messages and threads
 FAIL   error message from query_search_messages
        --- T060-count.14.EXPECTED      2017-08-08 09:01:36.000000000 +0000
        +++ T060-count.14.OUTPUT.clean  2017-08-08 09:01:36.000000000 +0000
        @@ -1,3 +1 @@
        -notmuch count: A Xapian exception occurred
        -A Xapian exception occurred performing query
        -Query string was: *
        +qemu: Unsupported syscall: 26

T070-insert: Testing "notmuch insert"
 FAIL   error exit when add_message returns OUT_OF_MEMORY
        --- T070-insert.26.expected     2017-08-08 09:01:46.000000000 +0000
        +++ T070-insert.26.output       2017-08-08 09:01:46.000000000 +0000
        @@ -1 +1 @@
        -1
        +255
qemu: Unsupported syscall: 26


Interesting might also be that despite the same issues your build log has it 
ran not into the final shell errors you had. So it continues to build despite 
the failed tests:

FATAL: ./T380-atomicity.sh: interrupted by signal -128
test/Makefile.local:64: recipe for target 'test' failed
make[2]: *** [test] Error 124
make[2]: Leaving directory '/root/notmuch-0.22.1'
dh_auto_test: make -j1 test VERBOSE=1 returned exit code 2
make[1]: Leaving directory '/root/notmuch-0.22.1'
 fakeroot debian/rules binary

And with that finally I found:
override_dh_auto_test:
ifeq ($(DEB_HOST_ARCH),armhf)
        TERM=vt100 dh_auto_test || true
Which means it is not meant/expected to work properly on archhf.

The difference that has to be found is why/how it breaks out of that || true
OTOH that is no more in latter versions like Artful, so the fix might be to 
actually fix that for virtual environments that are armhf, but do not support 
that syscall.

That now known it might also be reproducible via sbuild which I usually
prefer, but I rarely hav cross compile setups and struggled with it
trying for this case.


I lack the arm HW to check any further on arm64 host in particular, but as 
outlined above don't tihnk it is needed.
IMHO the testcases might need a few fixes, one of them is to test not only if 
gdb is installed, but if it is working.
You can use the setup described above to debug further - is that ok for you?

[1]: https://launchpadlibrarian.net/281860948/buildlog_ubuntu-yakkety-
armhf.notmuch_0.22.1-2ubuntu1_BUILDING.txt.gz


** Changed in: qemu (Ubuntu)
       Status: New => Incomplete

-- 
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.
https://bugs.launchpad.net/bugs/1707409

Title:
  testsuite fails under qemu (SIGILL) works fine on real hw

Status in launchpad-buildd:
  Invalid
Status in linux package in Ubuntu:
  Confirmed
Status in qemu package in Ubuntu:
  Incomplete

Bug description:
  Hello, after spending a lot of time debugging notmuch failure under
  armhf, we came to a conclusion:

  it started to fail when the infra moved to a new kernel 3.2 to a 4.2,
  and moved under qemu/kvm environment.

  the latest successful build is here  created on 2016-03-13
  https://launchpad.net/ubuntu/+source/notmuch/0.21-3ubuntu2/+build/9344826

  and the first bad is this one:  Started on 2016-08-31
  https://launchpad.net/ubuntu/+source/notmuch/0.22.1-2ubuntu1/+build/10600002

  Kernel version: Linux kishi10 3.2.0-98-highbank #138-Ubuntu SMP PREEMPT Mon 
Jan 11 13:24:41 UTC 2016 armv7l
  Kernel version: Linux bos01-arm64-024 4.2.0-42-generic #49-Ubuntu SMP Tue Jun 
28 21:24:20 UTC 2016 aarch64

  so, in the first case armhf was ran on top of an armv7 kernel, in the other 
case it became an arm64 one
  this might not even be a regression in qemu/kvm, but rather a change in 
buildd system that spot a new bug

  doing a xenial build failed aswell, so I presume this is not a
  toolchain regression (also because it works fine on real HW), but a
  qemu/linux bug.

  I did run the test under strace/valgrind, I can't do much more testing, but I 
hope the logs can be useful for you
  
https://launchpad.net/~costamagnagianfranco/+archive/ubuntu/locutusofborg-ppa/+build/13169431
  
https://launchpadlibrarian.net/331134898/buildlog_ubuntu-artful-armhf.notmuch_0.25-2ubuntu1_BUILDING.txt.gz

  You can see the strace/valgrind outputs between "BEGIN" and "END"
  keywords

To manage notifications about this bug go to:
https://bugs.launchpad.net/launchpad-buildd/+bug/1707409/+subscriptions

-- 
Mailing list: https://launchpad.net/~kernel-packages
Post to     : kernel-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kernel-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to