Open mkustermann opened 4 months ago
/cc @sigmundch for routing to ddc team
The code is calling _asyncCompleteWithErrorCallback
, which (after a likely no-op check) calls _asyncCompleteError
, as the stack trace shows.
The _asyncCompleteError
function starts with an assert(!_isComplete);
, which the code passes, so the _Future
doesn't have a value/error yet.
It may be either pending complete, chained or just incomplete. It should be incomplete, but that's not what's being tested, so that is suspicious by itself.
It then calls _setPendingComplete
which tries to set the future to be pending completion (not completed yet, because it's asyncComplete
, but can't be completed with something else any more, just waiting impatiently to complete with the already provided error.)
That function starts with assert(_mayComplete);
, which fails. That check only accepts being incomplete.
Which means the future state is either chained (has been completed with another future, waiting for that) or pending complete (has been asynchronously completed, haven't gotten around to actually do it yet), at a point where the async code tries to complete the same future again.
It's not completely impossible that this is related to a bugfix I made recently, or at least which asserts are used, because I do call _asyncCompleteError
from somewhere that also doesn't check for _mayComplete
. I'll give the state transitions a look-over.
(It's an error test, so most of these individual tests should not even compile. The unchecked_use_of_nullable_test_02
one should, though, it's marked as # 02: ok
.)
@lrhn From an in person discussion, DDC always runs with assertions enabled in the test application. Do any of these tests fail on any other platforms if you run them with assertions enabled? That could help us track down if the failures are related to your change.
There are new test failures on [tests] Use asyncStart/asyncEnd for two language tests.
The tests
are failing on configurations
it seems to hit