Skip to content
GitLab
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • D dynamorio
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 1,467
    • Issues 1,467
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 44
    • Merge requests 44
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Package Registry
    • Infrastructure Registry
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • DynamoRIO
  • dynamorio
  • Issues
  • #2715
Closed
Open
Issue created Nov 27, 2017 by Derek Bruening@derekbrueningContributor

bogus modoffs in drsym_search_symbols()

When using drsym_search_symbols(), my callback was passed a bogus offset, leading to a crash in my client:

0:000> .frame 4
04 0077b69c 00f889c8 gensysnums!search_syms_cb+0xa8 [c:\derek\drmemory\git\src\tools\gensysnums.cpp @ 403]
0:000> dv
           name = 0x0077b734 "d:\rs2.obj.x86fre\minkernel\ntdll\wow6432\objfre\i386\ntdll.exp"
        modoffs = 0xef000000
0:000> dt pSymInfo
dtx is unsupported for this scenario.  It only recognizes dtx [<type>] [<address>] with -a, -h, and -r.  Reverting to dt.
Local var @ 0x77b6bc Type _SYMBOL_INFO*
0x0077b6e0 
   +0x000 SizeOfStruct     : 0x58
   +0x004 TypeIndex        : 0
   +0x008 Reserved         : [2] 0
   +0x018 Index            : 1
   +0x01c Size             : 0
   +0x020 ModBase          : 0x11000000
   +0x028 Flags            : 0
   +0x030 Value            : 0
   +0x038 Address          : 0
   +0x040 Register         : 0
   +0x044 Scope            : 0
   +0x048 Tag              : 2
   +0x04c NameLen          : 0x3f
   +0x050 MaxNameLen       : 0x7d1
   +0x054 Name             : [1]  "d"
0:000> dc @@(pSymInfo)+54
0077b734  725c3a64 6f2e3273 782e6a62 72663638  d:\rs2.obj.x86fr
0077b744  696d5c65 72656b6e 5c6c656e 6c64746e  e\minkernel\ntdl
0077b754  6f775c6c 33343677 626f5c32 6572666a  l\wow6432\objfre
0077b764  3833695c 746e5c36 2e6c6c64 00707865  \i386\ntdll.exp.
0077b774  0000006c 008e0000 0077b980 50000062  l.........w.b..P

It's a symbol with a 0 address. It seems best to not pass it to the search callback? Or else have some way of indicating a 0 address: the offset alone is unsafe, as it may or may not be clear that it's bogus depending on the ModBase.

Assignee
Assign to
Time tracking