AArch64 ASSERT flushing 0-0 running a simple Java app
I ran the ReadWrite.java from #5309 (comment) on our Jenkins machine and hit this assert (not on the first runs which I killed with Ctrl-Z after generating some logs; this was a longer run, at -loglevel 3
):
$ ~/dr/build/bin64/drrun -no_enable_reset -disable_traces -loglevel 3 -- java ReadWrite
...
<Application /usr/lib/jvm/java-11-openjdk-arm64/bin/java (3848925). Internal Error: DynamoRIO debug check failure: core/fragment.c:6442 base != NULL || size != 0
Logs:
Exit from fragment via code mod
FLUSH STAGE 1: synch_unlink_priv(thread 3848931 flushtime 0): 0x0000000000000000-0x0000000000000000
SYSLOG_ERROR: Application /usr/lib/jvm/java-11-openjdk-arm64/bin/java (3848925). Internal Error: DynamoRIO debug check failure: core/fragment.c:6442 base != NULL || size != 0
(Error occurred @20269 frags in tid 3848931)
I think the flush routine will not accept 0-0 so the AArch64-specific dispatch code that calls flush_fragments_from_region() has to check for that.