DynamoRIO / DynamoRIO/dynamorio
Symbol iterators (dr_symbol_import_iterator_*) broken on Android and some ARM Linux toolchains?
- Dominant language
- C
- Stars
- 3.2k
- Forks
- 629
- Avg merge
- 2d 15h
- Merged PRs (30d)
- 31
Description
b92660f476eeed0bb7591cdde8c06bf9163757c5 failed on Android, but seemed to work everywhere else. The failure was a SIGSEGV with debug, and "didn't find imported symbol dlopen" without debug (see https://groups.google.com/forum/#!topic/dynamorio-devs/GCvQOnielMY). This rather suggests that the segfault was in symbol_iterator_start at module_elf.c:1509:
```
ASSERT_CURIOSITY(iter->cur_sym->st_name == 0); /* ok to skip 1st */
```
If that's true, then the function was probably badly broken before b92660f: it was always segfaulting, with the segfault caught by one of the safe_reads, so it was never finding any of the imported symbols.
This should be investigated: either investigate the segfault that happens with b92660f, or take any other recent commit, enable the test "client.modules" and add a dr_fprintf in the while loop in dr_init in modules.dll.c to see if dr_symbol_import_iterator_\* is finding any symbols at all on Android. If not, why not?
Contributor guide
Assessment
This issue has not been assessed yet.