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
  • #4501
Closed
Open
Issue created Oct 29, 2020 by Derek Bruening@derekbrueningContributor

ASSERT and CRASH with two clients: regression in 8.0

$ cd /work/dr/releases/rel-7.1.0/DynamoRIO-Linux-7.1.0-1
$ bin64/drrun -client samples/bin64/libbbcount.so 0 "" -client samples/bin64/libbbsize.so 1 "" -- ls
Client bbcount is running
Client bbsize is running
ACKNOWLEDGEMENTS  bin32  bin64	cmake  docs  drmemory  dynamorio  ext  include	lib32  lib64  License.txt  logs  README  samples  tools
Number of basic blocks seen: 4694
               Maximum size: 36 instructions
               Average size:   4.9 instructions

Instrumentation results:
    166909 basic block executions
       891 basic blocks needed flag saving
      3803 basic blocks did not

But:

$ cd /work/dr/releases/rel-8.0.0/DynamoRIO-Linux-8.0.0-1
$ bin64/drrun -client samples/bin64/libbbcount.so 0 "" -client samples/bin64/libbbsize.so 1 "" -- ls
<Application /usr/bin/ls (552079).  DynamoRIO internal crash at PC 0x000000007113730d.  Please report this at http://dynamorio.org/issues/.  Program aborted.
Received SIGSEGV at unknown pc 0x000000007113730d in thread 552079
Base: 0x0000000071000000
Registers:eax=0x00007fe32d851860 ebx=0x00007fe32d85cc80 ecx=0x00007ffe34cfca1f edx=0x00007fe3ae08d8aa
	esi=0x00007fe3ae08b6e8 edi=0x0000000000000000 esp=0x00007ffe34cfca10 ebp=0x0000000000000000
	r8 =0x000000000000118e r9 =0x0000000000000007 r10=0x0000000000000043 r11=0x0000000000217a08
	r12=0x00007fe3ae08d8aa r13=0x00007fe32d851860 r14=0x00007ffe34cfca1f r15=0x0000000000000000
	eflags=0x0000000000010206
version 8.0.0, build 1
-no_dynamic_options -client_lib '/work/dr/releases/rel-7.1.0/DynamoRIO-Linux-7.1.0-1/rel-8.0.0/DynamoRIO-Linux-8.0.0-1/samples/bin64/libbbcount.so;0;;/work/dr/releases/rel-7.1.0/DynamoRIO-Linux-7.1.0-1/rel-8.0.0/DynamoRIO-Linux-8.0.0-1/samples/bin64/libbbsize.so;1;' -code_api -stack_size 56K -signal_stack_size 32K -max_e
0x00000000713d849d 0x6974706f5f63696d>

Debug build reports this assert:

  #6  0x00000000710dc095 in d_r_internal_error (file=0x713983c8 "/home/travis/build/DynamoRIO/dynamorio/core/unix/module_elf.c", line=1131, 
    expr=0x7139919b "pd != NULL && name != NULL") at /home/travis/build/DynamoRIO/dynamorio/core/utils.c:176
#7  0x00000000712f7445 in module_lookup_symbol (sym=0x7fffb47889a8, pd=0x0) at /home/travis/build/DynamoRIO/dynamorio/core/unix/module_elf.c:1131
#8  0x00000000712f8616 in module_relocate_symbol (rel=0x7fffb478ab08, pd=0x7fff33f5cf30, is_rela=true)
    at /home/travis/build/DynamoRIO/dynamorio/core/unix/module_elf.c:1523
#9  0x00000000712f888a in module_relocate_rela (modbase=0x7fffb4788000 "\177ELF\002\001\001", pd=0x7fff33f5cf30, start=0x7fffb478aaf0, 
    end=0x7fffb478b330) at /home/travis/build/DynamoRIO/dynamorio/core/unix/module_elf.c:1595
#10 0x00000000712edee6 in privload_relocate_os_privmod_data (opd=0x7fff33f5cf30, mod_base=0x7fffb4788000 "\177ELF\002\001\001")
    at /home/travis/build/DynamoRIO/dynamorio/core/unix/loader.c:1125
#11 0x00000000712ee0ae in privload_relocate_mod (mod=0x7fff33f5ccf8) at /home/travis/build/DynamoRIO/dynamorio/core/unix/loader.c:1159
#12 0x00000000712ec614 in privload_process_imports (mod=0x7fff33f5ccf8) at /home/travis/build/DynamoRIO/dynamorio/core/unix/loader.c:587
#13 0x00000000711d8fe8 in privload_load_process (privmod=0x7fff33f5ccf8) at /home/travis/build/DynamoRIO/dynamorio/core/loader_shared.c:827
#14 0x00000000711d889f in privload_load (filename=0x7fffffffb710 "/home/bruening/dr/releases/DynamoRIO-Linux-8.0.0-1/ext/lib64/debug/libdrmgr.so", 
    dependent=0x7fff33f5c798, client=true) at /home/travis/build/DynamoRIO/dynamorio/core/loader_shared.c:695
#15 0x00000000712ecbc9 in privload_locate_and_load (impname=0x7fffb457cbcf "libdrmgr.so", dependent=0x7fff33f5c798, reachable=true)
    at /home/travis/build/DynamoRIO/dynamorio/core/unix/loader.c:682
#16 0x00000000712ec5b3 in privload_process_imports (mod=0x7fff33f5c798) at /home/travis/build/DynamoRIO/dynamorio/core/unix/loader.c:567
#17 0x00000000711d8fe8 in privload_load_process (privmod=0x7fff33f5c798) at /home/travis/build/DynamoRIO/dynamorio/core/loader_shared.c:827
#18 0x00000000711d889f in privload_load (filename=0x7fffffffba20 "/home/bruening/dr/releases/DynamoRIO-Linux-8.0.0-1/ext/lib64/debug/libdrreg.so", 
    dependent=0x7fff33f5c238, client=true) at /home/travis/build/DynamoRIO/dynamorio/core/loader_shared.c:695
#19 0x00000000712ecbc9 in privload_locate_and_load (impname=0x7fffb436a855 "libdrreg.so", dependent=0x7fff33f5c238, reachable=true)
    at /home/travis/build/DynamoRIO/dynamorio/core/unix/loader.c:682
#20 0x00000000712ec5b3 in privload_process_imports (mod=0x7fff33f5c238) at /home/travis/build/DynamoRIO/dynamorio/core/unix/loader.c:567
#21 0x00000000711d8fe8 in privload_load_process (privmod=0x7fff33f5c238) at /home/travis/build/DynamoRIO/dynamorio/core/loader_shared.c:827
#22 0x00000000711d889f in privload_load (filename=0x7fffffffbd30 "/home/bruening/dr/releases/DynamoRIO-Linux-8.0.0-1/ext/lib64/debug/libdrx.so", 
    dependent=0x7fff33f4a308, client=true) at /home/travis/build/DynamoRIO/dynamorio/core/loader_shared.c:695
#23 0x00000000712ecbc9 in privload_locate_and_load (impname=0x7fffb411d839 "libdrx.so", dependent=0x7fff33f4a308, reachable=true)
    at /home/travis/build/DynamoRIO/dynamorio/core/unix/loader.c:682
#24 0x00000000712ec5b3 in privload_process_imports (mod=0x7fff33f4a308) at /home/travis/build/DynamoRIO/dynamorio/core/unix/loader.c:567
#25 0x00000000711d8fe8 in privload_load_process (privmod=0x7fff33f4a308) at /home/travis/build/DynamoRIO/dynamorio/core/loader_shared.c:827
#26 0x00000000711d7169 in privload_process_early_mods () at /home/travis/build/DynamoRIO/dynamorio/core/loader_shared.c:141
#27 0x00000000711d7346 in loader_init_epilogue (dcontext=0x7fff33f56f40) at /home/travis/build/DynamoRIO/dynamorio/core/loader_shared.c:211
#28 0x0000000071052844 in dynamorio_app_init () at /home/travis/build/DynamoRIO/dynamorio/core/dynamo.c:638
#29 0x00000000712efc4d in privload_early_inject (sp=0x7fffffffdd10, 
    old_libdr_base=0x7ffff797f000 <error: Cannot access memory at address 0x7ffff797f000>, old_libdr_size=6815744)
    at /home/travis/build/DynamoRIO/dynamorio/core/unix/loader.c:2012

Along with fixing this, we need to add a test of multiple clients. We have tests of registering multiple clients but apparently not of running multiple clients which is a little surprising. OTOH this is a rarely used feature these days: instead we refactor clients into libraries for explicit coordination.

Assignee
Assign to
Time tracking