binaryninja-api
binaryninja-api copied to clipboard
Nondeterminism in pdb symbols
Version and Platform (required):
- Binary Ninja Version: 4.1.5167-dev
- OS: macOS
- OS Version: 14
- CPU Architecture: M1
Bug Description: I have this pdb I'm loading, and some of the VTable symbols it finds change between different loads.
Steps To Reproduce:
- Open this binary: Archive.zip
- Navigate to 0x409c3c
- Does this a couple more times
- Observe the symbol at 0x409c3c takes one of two forms:
00409c3c struct Dog::VTable Dog::`vftable' =
00409c3c {
00409c3c void (* woof)(class Dog const* this) = j_Dog::describe
00409c40 void* (* __vecDelDtor)(class Dog* this, uint32_t) = j_Dog::`vector deleting destructor'
00409c44 }
00409c3c struct Animal::VTable Dog::`vftable'{for `Animal'} =
00409c3c {
00409c3c void (* describe)(class Animal const* this) = j_Dog::describe
00409c40 }
Expected Behavior: I expected the results from loading a PDB to be consistent across runs.
Additional Information: Likely something to do with both the debuginfo loading symbol queue and the hashmap-by-name order leading to two symbols at the same address with equal confidence racing to apply