Discussion:
Inline RT #85336 (Race Condition)
David Oswald
2013-05-16 04:15:32 UTC
Permalink
I noticed Andreas Koenig opened a bug report on Inline (RT#85336)
wherein he asserts there's probably a race condition present, as he's
finding that operating several smokers in parallel will sometimes
result in failures.

This may be related to an issue I see, where running Inline::CPP's
test suite with HARNESS_OPTIONS=j9 will also result in failures.
Inline::CPP's tests are not sensitive to script order (tests within a
script must be run in order, but it shouldn't matter what order the
test scripts are run). As they're not order-sensitive, failure under
harness parallel testing has to point to a race condition within
Inline::CPP or Inline.

I'm going to look over Inline::CPP's code base with added scrutiny to
assure that any IO operations it owns are implementing flocking. But
it doesn't own many IO operations; most IO is pushed off to Inline, or
the compilers themselves.

One area I hadn't previously considered is Makefile.PL itself, which
opens a file for output. That should be fine under normal user
conditions, but could present a problem for smokers running in
parallel.

Dave

--

David Oswald
daoswald-***@public.gmane.org
David Mertens
2013-05-17 15:36:08 UTC
Permalink
I am not sure about the underlying mechanics, but if you need a second set
of eyes on any of the code, feel free to drop a note with line numbers
where the code does funny things.


David
Post by David Oswald
I noticed Andreas Koenig opened a bug report on Inline (RT#85336)
wherein he asserts there's probably a race condition present, as he's
finding that operating several smokers in parallel will sometimes
result in failures.
This may be related to an issue I see, where running Inline::CPP's
test suite with HARNESS_OPTIONS=j9 will also result in failures.
Inline::CPP's tests are not sensitive to script order (tests within a
script must be run in order, but it shouldn't matter what order the
test scripts are run). As they're not order-sensitive, failure under
harness parallel testing has to point to a race condition within
Inline::CPP or Inline.
I'm going to look over Inline::CPP's code base with added scrutiny to
assure that any IO operations it owns are implementing flocking. But
it doesn't own many IO operations; most IO is pushed off to Inline, or
the compilers themselves.
One area I hadn't previously considered is Makefile.PL itself, which
opens a file for output. That should be fine under normal user
conditions, but could present a problem for smokers running in
parallel.
Dave
--
David Oswald
--
"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are,
by definition, not smart enough to debug it." -- Brian Kernighan
Loading...