DynamoRIO / DynamoRIO/dynamorio

APP CRASH (acpacker-hostname.exe) vmvector does not match exec area bounds

Open
#2,240 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
C
Stars
3.2k
Forks
629
Avg merge
2d 15h
Merged PRs (30d)
31

Description

With version 6.2.0-2 of DynamoRio
The latest build does not solve the problem

On Windows 7, with a 32 bit application, acpacker-hostname.exe the classic hostname software packed with acpacker

I run it with (no client)
C:\rio\bin32\drrun.exe -- acpacker-hostname.exe

The expected output is a line with the hostname.
Instead we get a crash with message

```
SYSLOG_ERROR: Application acpacker-hostname.exe.bin (552).
Internal Error: DynamoRIO debug check failure:
dynamorio\core\vmareas.c:8505 false && "vmvector does not match exec area bounds"
```

From what I understand, the problem is that there is non consistency between a list of executable areas and a list of thread vm areas.
For executable areas, we have two adjacent ones : 0x01019000-0x0101a000 and 0x0101a000-0x0101b000
For thread vm areas, we only have a merged one : 0x01019000-0x0101b000

The following steps to get this result are
new executable area 0x01019000-0x0101a000 W-S-
new executable area 0x0101a000-0x0101b000 W---
change of flags for executable area 0x0101a000-0x0101b000 W-S-
check_thread_vm_area: pc = 0x0101a1fc
in add_vm_area 0x0101a000 0x0101b000 selfmod replacement
=> changing 0x01019000-0x0101a000 to 0x01019000-0x0101b000
new vm area for thread: 0x01019000-0x0101b000 W-S-

I do not know what isn the best fix
ignore the check
```
DOCHECK(CHKLVL_ASSERTS, {
LOG(THREAD, 1, LOG_VMAREAS,
"checking thread vmareas against executable_areas\n");
exec_area_bounds_match(dcontext, data);
});
```
Or merge executable areas when their flags get changed

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.