git, v10-branch
The attached zip is compiler-generated V95 output, apart from the indenting and the comments. The expected output is:
Incr/decr operators... line 91, CHECK_RES line 91-1, CHECK_RES line 91-2B, CHECK_RES line 91-B, cleared _$ID111 line 91-C, done line 91: completed
However, vvp/a.out exits in between the final two $write calls (in other words, 'line 91: completed' does not appear).
Note that this worked in earlier versions of iverilog.
I can confirm V10 produces different results then devel which produced the following:
Incr/decr operators...
line 91, CHECK_RES
line 91-1, CHECK_RES
line 91-2B, CHECK_RES
line 91-B, cleared $ID111
line 91-C, done
line 91: completed
line 92, CHECK_RES
line 93, CHECK_RES
line 94, CHECK_RES
line 100, arithmetic
line 103, CHECK_RES
in $L59...
incr passcount...
done
test complete: 30 passes, 0 fails
Which is more than you indicated above.
The commit that results in this passing in devel is 2fedb4942ec7537b26a4d9ac26e4e8606fda019b. And indeed, applying that change to v10 appears to fix the problem. But I suspect that is just masking the real problem, which is likely a buffer overrun or rogue pointer. I can also get the test to pass in v10 by:
but fail again if I increase the initial allocation to
100*sizeof(vpiHandle)
. I can't spot any problem with that section of code.I guess it's time to run with valgrind...
Forgot to say: if I comment out the two disable statements in task
_$ID32
, that also causes the test to pass.This should now be fixed in both the master and v10 branches. Please reopen this bug if you find otherwise.