DynamoRIO / DynamoRIO/dynamorio

ASSERT !bitmap_test in -satisfy_w_xor_x on an app that forks

Open
#5,499 0 comments 0 reactions 0 assignees View on GitHub
Bug-Assert Component-DrMemtrace
Dominant language
C
Stars
3.2k
Forks
629
Avg merge
2d 15h
Merged PRs (30d)
31

Description

For #5495 I'm adding a fork test to drcachesim -offline and it fails under -satisfy_w_xor_x for two reasons: first, there's an assert on an unclosed file, which I'm fixing in my #5495 PR. The other I did not have time to figure out so I'm filing here and disabling the test for -satisfy_w_xor_x. There is something wrong in the across-fork remappings wrt the vmm metadata that only shows up with a tool using more heap than plain DR:

```
$ rm -rf drmemtrace.*.dir; bin64/drrun -loglevel 2 -satisfy_w_xor_x -t drcachesim -offline -- suite/tests/bin/linux.fork

parent is running under DynamoRIO
<-- parent 66462 forked child 66465 -->

parent waiting for child
child is running under DynamoRIO

blocks, vmh->num_blocks, vmm_addr_to_block(vmh, p), (uint)(size / DYNAMO_OPTION(vmm_block_size)))
(Error occurred @3693 frags in tid 66465)
```

```
#0 report_dynamorio_problem (dcontext=0x0, dumpcore_flag=8, exception_addr=0x0, report_ebp=0x0,
fmt=0x7ffff7ec3018 "DynamoRIO debug check failure: %s:%d %s\n(Error occurred @%d frags in tid %d)") at /home/bruening/dr/git/src/core/utils.c:2114
#1 0x00007ffff7c4a7c2 in d_r_internal_error (file=0x7ffff7ec2eb8 "/home/bruening/dr/git/src/core/utils.c", line=1566,
expr=0x7ffff7ec4076 "!bitmap_test(b, first_block)") at /home/bruening/dr/git/src/core/utils.c:179
#2 0x00007ffff7c4e844 in bitmap_free_blocks (b=0x7fff73b4e000, bitmap_size=262144, first_block=8, num_free=23)
at /home/bruening/dr/git/src/core/utils.c:1566
#3 0x00007ffff7ce1327 in vmm_heap_free_blocks (vmh=0x7ffd73b8e108, p=0x7fffb3b56000 "", size_in=94208, which=(VMM_SPECIAL_MMAP | VMM_REACHABLE))
at /home/bruening/dr/git/src/core/heap.c:1472
#4 0x00007ffff7ce5cbb in heap_unreserve_for_external_mapping (p=0x7fffb3b56000 "", size=94208, which=(VMM_SPECIAL_MMAP | VMM_REACHABLE))
at /home/bruening/dr/git/src/core/heap.c:2691
#5 0x00007ffff7e41a17 in os_unmap_file (map=0x7fffb3b56000 "", size=94208) at /home/bruening/dr/git/src/core/unix/os.c:4417
#6 0x00007ffff7ce976a in d_r_unmap_file (map=0x7fffb3b56000 "", size=94208) at /home/bruening/dr/git/src/core/heap.c:3323
#7 0x00007ffff7e741cf in privload_unmap_file (privmod=0x7ffd73bbd5c8) at /home/bruening/dr/git/src/core/unix/loader.c:406
#8 0x00007ffff7d509ad in privload_unload (privmod=0x7ffd73bbd5c8) at /home/bruening/dr/git/src/core/loader_shared.c:734
#9 0x00007ffff7d4f548 in unload_private_library (modbase=0x7fffb3b56000 "") at /home/bruening/dr/git/src/core/loader_shared.c:373
#10 0x00007ffff7e40c13 in unload_shared_library (lib=0x7fffb3b56000) at /home/bruening/dr/git/src/core/unix/os.c:4060
#11 0x00007ffff7d5a747 in instrument_exit () at /home/bruening/dr/git/src/core/lib/instrument.c:882
#12 0x00007ffff7bbedf9 in dynamo_shared_exit (toexit=0x0) at /home/bruening/dr/git/src/core/dynamo.c:1099
#13 0x00007ffff7bbf2a3 in dynamo_process_exit_cleanup () at /home/bruening/dr/git/src/core/dynamo.c:1393
#14 0x00007ffff7bbf431 in dynamo_process_exit () at /home/bruening/dr/git/src/core/dynamo.c:1448
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.