[Dbd-firebird-devel] Bug#719582: libdbd-firebird-perl: FTBFS on mipsel: 300 minutes of inactivity
Damyan Ivanov
dmn at debian.org
Sun Sep 8 07:37:48 UTC 2013
Control: tags -1 pending
-=| Damyan Ivanov, 07.09.2013 23:23:16 +0300 |=-
> I managed to reproduce this on eder.d.o (mipsel) and on my laptop
> (amd64). The test needs to be run several times for the hang to
> happen.
>
> The test that fails waits for asynchronous database event posted by
> another thread.
I have found the reason for this.
What the test does is the following:
* start a worker thread that connects to the DB and performs some
event-triggering operations, then disconnects and quits.
* in the main thread, call ib_wait_event capturing the triggered
events
The nature of the ib_wait_event call is that it stops execution,
waiting for events to come, synchronously. Usually, the main thread
manages to reach the ib_wait_event call before the worker thread
starts posting events. However, sometimes the worker thread is run
before the main thread, and does all of its job before the main thread
reaches ib_wait_event, meaning that the events that ib_wait_event
wants to see never come and the test hangs at the ib_wait_event call.
I believe this is exactly what happens in this test when it hangs. To
make it reproducible, add a small sleep before calling ib_wait_event.
Ideally, we should suspend the worker thread and resume it only when
the main thread has called ib_wait_event. However, because of the
synchronous nature of ib_wait_event, this is not possible (this is not
firebird fault, there is an asynchronous interface which we also test
earlier in that test and which works).
My first idea for fixing this was to add a small delay in the worker
thread, giving time to the main thread to reach ib_wait_event before
starting triggering events. This seems to work at first glance, but
fails even with a 5 seconds delay when the system is heavily loaded
(for example by a -j5 build of firebird server on a 4 CPU laptop).
My next idea is to skip these sub-tests when AUTOMATED_TESTING is
present in the environment, which is the case when the Debian package
is building.
If somebody has other ideas, please shout.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.alioth.debian.org/pipermail/dbd-firebird-devel/attachments/20130908/07706361/attachment.sig>
More information about the Dbd-firebird-devel
mailing list