DynamoRIO / DynamoRIO/dynamorio

Symbol iterators (dr_symbol_import_iterator_*) broken on Android and some ARM Linux toolchains?

Open
#2,008 4 comments 0 reactions 0 assignees View on GitHub
OpSys-Android OpSys-ARM
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

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.