You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Dr. Memory computes the segment bases at startup via:
byte *gs_base =
opnd_compute_address(opnd_create_far_base_disp(SEG_GS, REG_NULL, REG_NULL,
0, 0, OPSZ_lea), &mc);
a related question is do we need this to do anything for linux:
/* Restore app's PEB and TEB fields (issue #248) */
dr_switch_to_app_state(drcontext);
conclusion is we don't need it for linux though since there is no swapping:
the private stuff is all separate and is all in DR memory (uses heap_mmap)
From [email protected] on August 04, 2011 14:10:33
after issue #495 was fixed I tried Dr. Memory with the linux private loader but there's another problem in the way:
new thread
#0
id=26199in event_thread_init()
fs base=0x19e25000, gs base=0x19e29940
TAG 0xf77940db
+0 L3 65 8b 0d 0c 00 00 00 mov %gs:0x0c -> %ecx
+7 L3 85 c9 test %ecx %ecx
+9 L3 0f 85 f1 00 00 00 jnz $0xf77941db
END 0xf77940db
whole-bb scratch: r1 =%edx spill#0 x0, r2 =%eax spill#1 x0
fastpath: mov %gs:0x0c -> %ecx | prop=1 srcsz=4 dstsz=4 checkdef=0 markdef=0 checkunaddr=0
fastpath: test %ecx %ecx | prop=2 srcsz=4 dstsz=4 checkdef=1 markdef=0 checkunaddr=0
whole-bb scratch: r1 =used, r2 =used, efl=unused
slow_path 0xf77940db: mov %gs:0x0c -> %ecx
memref: read @0xf77940db 0x19e2994c 0x4 bytes (pre-dword 0x55 0x55) (was special)
WARNING: unknown region 0x19e29000-0x19e2a000: marking as defined
FATAL ERROR: ASSERT FAILURE (thread 26199): /home/bruening/drmemory/git/src/drmemory/alloc_drmem.c:1937: !dr_memory_is_dr_internal(addr) && !dr_memory_is_in_client(addr) (app is using tool's memory: please report this!)
(gdb) p /x * heapmgt
$2 = {vmheap = {start_addr = 0x19dd4000, end_addr = 0x21dd4000, alloc_start = 0x0, alloc_size = 0x8000000, num_blocks = 0x2000,
Dr. Memory computes the segment bases at startup via:
byte *gs_base =
opnd_compute_address(opnd_create_far_base_disp(SEG_GS, REG_NULL, REG_NULL,
0, 0, OPSZ_lea), &mc);
a related question is do we need this to do anything for linux:
/* Restore app's PEB and TEB fields (issue #248) */
dr_switch_to_app_state(drcontext);
conclusion is we don't need it for linux though since there is no swapping:
the private stuff is all separate and is all in DR memory (uses heap_mmap)
dr_insert_get_seg_base() is doing the right thing
so it looks like it's just opnd_compute_address()
Original issue: http://code.google.com/p/dynamorio/issues/detail?id=527
The text was updated successfully, but these errors were encountered: