Your message dated Wed, 09 May 2018 10:20:29 +0000
with message-id <e1fgmcz-000cle...@fasolo.debian.org>
and subject line Bug#898158: fixed in dbus-python 1.2.8-2
has caused the Debian Bug report #898158,
regarding dbus-python: FTBFS on armhf 6% of the time: reply to
org.freedesktop.DBus.Binding.Tests.Trigger didn't arrive
to be marked as done.
This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.
(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact ow...@bugs.debian.org
immediately.)
--
898158: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=898158
Debian Bug Tracking System
Contact ow...@bugs.debian.org with problems
--- Begin Message ---
Source: dbus-python
Version: 1.2.8-1
Severity: serious
Justification: fails to build from source (but built successfully in the past)
Build-time tests for dbus-python 1.2.8-1 failed on the armhf buildd. I
re-ran the tests 100 times in a loop on the armhf porterbox 'harris'
and they failed 6 times (2 for Python 2 and 4 for Python 3).
>From the log, we can see that there is a race condition: the client exits
before the server sent the expected response to its actions:
INFO:cross-test-client:Binding signal handler for Triggered
INFO:cross-test-client:method/signal: Triggering signal
INFO:cross-test-server:method/signal: client wants me to emit
Triggered(dbus.UInt64(42L)) from dbus.UTF8String('/Where/Ever')
INFO:cross-test-client:method/signal: Trigger() returned
INFO:cross-test-client:signal/callback: Emitting signal to trigger callback
INFO:cross-test-server:signal/callback: Triggered by client (:1.3:/Test):
(dbus.UInt16(42),dbus.Double(23.0))
INFO:cross-test-client:signal/callback: Emitting signal returned
INFO:cross-test-client:signal/callback: Response received
(dbus.UInt16(42),dbus.Double(23.0))
ERROR:cross-test-client:report 1: reply to
org.freedesktop.DBus.Binding.Tests.Trigger didn't arrive
INFO:cross-test-client:asking server to Exit
INFO:cross-test-server:signal/callback: Sent Response
INFO:cross-test-server:client wants me to Exit
INFO:cross-test-server:will quit when idle
INFO:cross-test-client:server says it will exit
INFO:cross-test-client:main loop exited.
INFO:cross-test-server:method/signal: Emitting Triggered(dbus.UInt64(42L)) from
dbus.UTF8String('/Where/Ever')
INFO:cross-test-server:method/signal: Emitted Triggered
INFO:cross-test-server:main loop exited.
dbus-daemon[16779]: [session uid=2912 pid=16779] Reloaded configuration
dbus-daemon[16779]: [session uid=2912 pid=16779] Reloaded configuration
org.freedesktop.DBus.Binding.Tests.Trigger fail 1
The failing test is part of an interface intended to be an
interoperability test between D-Bus language bindings (I think only
dbus-python and dbus-java ever actually implemented it), so the confusing
names unfortunately can't be changed.
* client logs "method/signal: Triggering signal"
* record that a response to Tests.Trigger is expected
* client calls Tests.Trigger() method on server, asynchronously
* server implements Tests.Trigger() as follows:
- log "method/signal: client wants me to emit Triggered(%r) from %r"
- record that Tests.Trigger() was tested
- send back a successful reply to the client, which causes this:
+ client logs "method/signal: Trigger() returned
+ client logs "signal/callback: Emitting signal to trigger callback"
+ client emits signal SignalTests.Trigger(42, 23)
+ client logs "signal/callback: Emitting signal returned"
- next time the server returns to its main loop:
+ log "method/signal: Emitting Triggered(%r) from %r"
+ create an object at the given object path
+ emit SignalTests.Triggered signal from it
+ log "method/signal: Emitted Triggered"
* client responds to SignalTests.Triggered as follows:
- log "method/signal: Triggered(%r) by %r"
- record that a response to Tests.Trigger was received
- do some checks on the parameters
- log "Tests.Trigger pass"
* server responds to SignalTests.Trigger as follows:
- log "signal/callback: Triggered by client (%s:%s): (%r,%r)"
- record that SignalTests.Trigger was tested
- call CallbackTests.Response() method on the client, blocking for a
reply
- log "signal/callback: Sent Response"
* client implements CallbackTests.Response() as follows:
- log "signal/callback: Response received (%r,%r)"
- record that a response to SignalTests.Trigger was received
- check the parameters
- log "SignalTests.Trigger pass"
- check that every expected reply has arrived
- call Tests.Exit() on the server, asynchronously
+ on success, log "server says it will exit" and quit the main loop
+ 1 second later, quit the main loop anyway
There is a race condition here between these chains of events, which as
far as I can tell has existed for at least 10 years:
* server receives Tests.Trigger() and schedules SignalTests.Triggered
* server returns to main loop
* server emits SignalTests.Triggered
* client receives SignalTests.Triggered
and
* server receives Tests.Trigger() and replies with success
* client receives success and emits SignalTests.Trigger
* server receives SignalTests.Trigger and calls CallbackTests.Response()
* client receives CallbackTests.Response() and calls Tests.Exit()
* server receives Tests.Exit() and replies with success
* client quits its main loop
Solution: don't reply to Tests.Trigger() until after the
SignalTests.Triggered signal has been sent. Because the client called
Tests.Trigger() asynchronously, messages are not re-ordered and the reply
arrives after the signal, so the whole chain of events leading up to
"client receives SignalTests.Triggered" happens before
"client receives success and emits SignalTests.Trigger".
smcv
--- End Message ---
--- Begin Message ---
Source: dbus-python
Source-Version: 1.2.8-2
We believe that the bug you reported is fixed in the latest version of
dbus-python, which is due to be installed in the Debian FTP archive.
A summary of the changes between this version and the previous one is
attached.
Thank you for reporting the bug, which will now be closed. If you
have further comments please address them to 898...@bugs.debian.org,
and the maintainer will reopen the bug report if appropriate.
Debian distribution maintenance software
pp.
Simon McVittie <s...@debian.org> (supplier of updated dbus-python package)
(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing ftpmas...@ftp-master.debian.org)
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
Format: 1.8
Date: Wed, 09 May 2018 10:19:16 +0100
Source: dbus-python
Binary: python-dbus python-dbus-dbg python-dbus-dev python-dbus-doc
python-dbus-tests python3-dbus python3-dbus-dbg python3-dbus-tests
Architecture: source
Version: 1.2.8-2
Distribution: unstable
Urgency: medium
Maintainer: Utopia Maintenance Team
<pkg-utopia-maintain...@lists.alioth.debian.org>
Changed-By: Simon McVittie <s...@debian.org>
Description:
python-dbus - simple interprocess messaging system (Python interface)
python-dbus-dbg - debug build of the D-Bus Python 2 interface
python-dbus-dev - main loop integration development files for python-dbus
python-dbus-doc - Documentation for the D-Bus Python interface
python-dbus-tests - simple interprocess messaging system (Python interface -
tests)
python3-dbus - simple interprocess messaging system (Python 3 interface)
python3-dbus-dbg - debug build of the D-Bus Python 3 interface
python3-dbus-tests - simple interprocess messaging system (Python 3 interface
- tests)
Closes: 898158
Changes:
dbus-python (1.2.8-2) unstable; urgency=medium
.
* d/p/cross-test-client-Wait-until-default-method-timeout-for-E.patch,
d/p/cross-test-server-Avoid-a-race-condition-in-the-client.patch:
Fix a long-standing race condition in the automated tests that caused
FTBFS on armhf around 6% of the time (Closes: #898158)
* Remove X-Python{,3}-Version annotations. The required versions are the
oldest supported in oldstable, so the annotations are unnecessary.
* Run tests with LC_ALL=C.UTF-8, to avoid trying to print localized
messages in a LC_CTYPE that might not support them
Checksums-Sha1:
92967602e7a5956bc85e9bec5ce63ac15ce6c442 3152 dbus-python_1.2.8-2.dsc
6adcad23222e3bf37c289632ed441dcc49fd8471 34632
dbus-python_1.2.8-2.debian.tar.xz
d374b47c06b4d55f62405e0ba2d699eeee5216ed 7983
dbus-python_1.2.8-2_source.buildinfo
Checksums-Sha256:
b28a4f2c086e934cb200fbb5b91b7df908cd0f159409556bf00ff5b5d11eb199 3152
dbus-python_1.2.8-2.dsc
b548a00791f6ab59cb24c23077b7e4c15713fc29bc2cedcf5c1e8d3e8d7d771f 34632
dbus-python_1.2.8-2.debian.tar.xz
aef27c20569c1b36de1660823ceb39f09020b28c52bd94d7933b34ca4967a2b1 7983
dbus-python_1.2.8-2_source.buildinfo
Files:
33bd168aa668e03017272e2847a96d52 3152 devel optional dbus-python_1.2.8-2.dsc
c5db9b2e52b0fd2490f2b61196189e3d 34632 devel optional
dbus-python_1.2.8-2.debian.tar.xz
aea30e4bc218043d0452ec85cd77fc19 7983 devel optional
dbus-python_1.2.8-2_source.buildinfo
-----BEGIN PGP SIGNATURE-----
iQIzBAEBCAAdFiEENuxaZEik9e95vv6Y4FrhR4+BTE8FAlryxw4ACgkQ4FrhR4+B
TE+GlQ/9HN9uGBZpEJyKSy4oOtd0lXwwsKZbl53SCgRHu24PNsnU+Gu1KvcH7KW7
ncI36AJtzq8SiNWLE4GXKjDOYQXtUEPSLTy0CozWPzIPmZUG6J4DtsTV63VKWwbP
oGuHk2w3SmsAZUEiBHpg3ubxH3l58piJnCeIGS7Xkb7mADwv8Oi8cfQOF/WGToso
582RilBM2L5LmeHeXyim7CtB5F9xdaJgZZ76lofu3V5UQ0pIL+fM7Fq8DEHWAkQ5
002/LahWq5dbTojSRiuE9hnX8eQFUqa6YrPQHHaQA5ZI1u/FhHk66LqjriKY+JFc
/Yb+uyzAfkmTw4YsXYWcsEGfOGAPSjopXE+ZpAH+LlT3QVEEXBU2625CH3nQGGf0
uIH88YiSszd6t7RQTpwW5vX5f0IZam5E6ZjAOCdeGGZC1EmgUp3Ki4wmTwIljg94
yO1oRwat63E7Wz43tXN9Yn2QFQJ5Yk9lzugyobDr/MiNqWCi2OvxsPleY4dtVPwf
I5VAWGkgDEnUOcoQ4h7+ZNnGHg04fg6pvDkMdToCyBNQNpbwsQlsHGi5UV9eaF9N
COzCb2xTFjAM1Yps1zWQntEXC+dhBDtqpcqpsUjE9ULL0QoKsK+8nuNRmz0KI2fG
dR6cIwJsEO4MUuyHDcDsTvYSaYQDwvD8IHHZjHL2OEmU8oMhVDI=
=Kl8b
-----END PGP SIGNATURE-----
--- End Message ---