DynamoRIO / dynamorio

Dynamic Instrumentation Tool Platform
Other
2.66k stars 562 forks source link

ASSERT (DRT+ASan when pcache is enabled) vmareas.c:1255 info->cache==NULL #1072

Open derekbruening opened 9 years ago

derekbruening commented 9 years ago

From timurrrr@google.com on February 11, 2013 11:50:58

Steps to repro: 0) Build DRT, Release build

1) Build DR with cmake -DDR_EXT_DRMGR_STATIC=ON -DDR_EXT_DRSYMS_STATIC=ON \ -DDR_EXT_DRUTIL_STATIC=ON -DDR_EXT_DRWRAP_STATIC=ON \ -DCMAKE_BUILD_TYPE=Debug ..

2) Run: ./dr/exports/bin64/drrun -debug -v -loglevel 1 -no_enable_reset -persist -persist_dir /tmp/pcache -- ./DumpRenderTree /home/timurrrr/bb.html -> the first run is OK

3) Run once again, the same cmdline: ... <Application ./DumpRenderTree (31569). Internal Error Internal DynamoRIO Error: core/vmareas.c:1255 info->cache == NULL (Error occurred @15574 frags) version 4.0.1888, custom build ... 0x0000000040d7e830 0x00000000711171ff 0x0000000040d7e990 0x00000000711bf32f 0x0000000040d7e9c0 0x00000000711bf95c 0x0000000040d7ea70 0x00000000711c4c2b 0x0000000040d7eab0 0x00000000711c4c85 0x0000000040d7eae0 0x00000000710b8601 0x0000000040d7eb30 0x00000000711ca317 0x0000000040d7ebe0 0x00000000712d42b2 0x0000000040d7ecd0 0x00000000712d4edb 0x0000000040d7ee40 0x000000007110d2a0 0x0000000040d7ee70 0x0000000071104d85 0x0000000040d7ef10 0x000000007110182e 0x0000000040d7eff0 0x0000000040d32e8d 0x00007fff0d6f67d0 0x00007f8545e1669a> <rank order violation shared_cache_lock(mutex)@core/fcache.c:1529 acquired after executable_areas(readwrite)@core/vmareas.c:1560 in tid:7b51> <rank order violation shared_cache_lock(mutex)@core/fcache.c:1529 acquired after executable_areas(readwrite)@core/vmareas.c:1560 in tid:7b51>

Original issue: http://code.google.com/p/dynamorio/issues/detail?id=1072

derekbruening commented 9 years ago

From timurrrr@google.com on February 11, 2013 08:52:28

(Please note I've cleaned up /tmp/pcache/* before the first run)

derekbruening commented 9 years ago

From timurrrr@google.com on February 11, 2013 09:07:56

Here's the stack I got from gdb (just "bt" after starting with -pause_on_error and attaching)

0 syscall_ready () at core/x86/x86.asm:1122

1 0x00000000715fb530 in ?? () from exports/lib64/debug/libdynamorio.so

2 0x00000000712c9032 in thread_yield () at core/linux/os.c:3106

3 0x00000000712ea8a9 in os_dump_core (msg=0x7132931b "rank order violation")

at core/linux/signal.c:5171

4 0x000000007111923f in deadlock_avoidance_lock (lock=0x4131a158, acquired=true, ownable=true)

at core/utils.c:598

5 0x0000000071119be7 in mutex_trylock (lock=0x4131a158) at core/utils.c:909

6 0x0000000071119acd in mutex_lock (lock=0x4131a158) at core/utils.c:848

7 0x00000000710c6ade in fcache_stats_exit () at core/fcache.c:976

8 0x000000007119553b in dump_global_stats (raw=false) at core/utils.c:3066

9 0x000000007111cb3b in report_dynamorio_problem (dcontext=0x4131e880, dumpcore_flag=8, exception_addr=0x0,

report_ebp=0x4136e830 "\220\351\066A", 
fmt=0x71328878 "Internal DynamoRIO Error: %s:%d %s\n(Error occurred @%d frags)")
at core/utils.c:2243

10 0x00000000711171ff in internal_error (file=0x7133de10 "core/vmareas.c",

line=1255, expr=0x7133ea80 "info->cache == NULL") at core/utils.c:177

11 0x00000000711bf32f in adjust_coarse_unit_bounds (area=0x4138f6c8, if_invalid=false)

at core/vmareas.c:1255

12 0x00000000711bf95c in remove_vm_area (v=0x41389f78,

start=0x7fa5ec728000 "\304\371\361\377\224\351\377\377\364\371\361\377\254\351\377\377\244\372\361\377\324\351\377\377\304\372\361\377\354\351\377\377t\375\361\377\024\352\377\377\224\375\361\377\064\352\377\377\264\375\361\377T\352\377\377\304\375\361\377l\352\377\377\304\376\361\377\214\352\377\377\324\v\362\377\264\352\377\377\004\017\362\377\334\352\377\377\304\020\362\377\374\352\377\377\344\020\362\377\034\353\377\377\004\021\362\377<\353\377\377\024\021\362\377T\353\377\377D\023\362\377|\353\377\377d\023\362\377\224\353\377\377\004\024\362\377\264\353\377\377\024\024\362\377\314\353\377\377d\024\362\377\354\353\377\377\064\027\362\377\024\354\377\377d\027\362\377,\354\377\377\304\032\362\377T\354\377\377\364\033\362\377|\354\377\377\344%\362\377\244\354\377\377"..., end=0x7fa5ec75c000 "\360\264\005", 
restore_prot=true) at core/vmareas.c:1326

13 0x00000000711c4c2b in remove_executable_vm_area (

start=0x7fa5ec728000 "\304\371\361\377\224\351\377\377\364\371\361\377\254\351\377\377\244\372\361\377\324\351\377\377\304\372\361\377\354\351\377\377t\375\361\377\024\352\377\377\224\375\361\377\064\352\377\377\264\375\361\377T\352\377\377\304\375\361\377l\352\377\377\304\376\361\377\214\352\377\377\324\v\362\377\264\352\377\377\004\017\362\377\334\352\377\377\304\020\362\377\374\352\377\377\344\020\362\377\034\353\377\377\004\021\362\377<\353\377\377\024\021\362\377T\353\377\377D\023\362\377|\353\377\377d\023\362\377\224\353\377\377\004\024\362\377\264\353\377\377\024\024\362\377\314\353---Type <return> to continue, or q <return> to quit---

\377\377d\024\362\377\354\353\377\377\064\027\362\377\024\354\377\377d\027\362\377,\354\377\377\304\032\362\377T\354\377\377\364\033\362\377|\354\377\377\344%\362\377\244\354\377\377"..., end=0x7fa5ec75c000 "\360\264\005", have_writelock=true) at core/vmareas.c:2748

14 0x00000000711c4c85 in remove_executable_region (

start=0x7fa5ec728000 "\304\371\361\377\224\351\377\377\364\371\361\377\254\351\377\377\244\372\361\377\324\351\377\377\304\372\361\377\354\351\377\377t\375\361\377\024\352\377\377\224\375\361\377\064\352\377\377\264\375\361\377T\352\377\377\304\375\361\377l\352\377\377\304\376\361\377\214\352\377\377\324\v\362\377\264\352\377\377\004\017\362\377\334\352\377\377\304\020\362\377\374\352\377\377\344\020\362\377\034\353\377\377\004\021\362\377<\353\377\377\024\021\362\377T\353\377\377D\023\362\377|\353\377\377d\023\362\377\224\353\377\377\004\024\362\377\264\353\377\377\024\024\362\377\314\353\377\377d\024\362\377\354\353\377\377\064\027\362\377\024\354\377\377d\027\362\377,\354\377\377\304\032\362\377T\354\377\377\364\033\362\377|\354\377\377\344%\362\377\244\354\377\377"..., size=212992, have_writelock=true)
at core/vmareas.c:2761

15 0x00000000710b8601 in flush_fragments_and_remove_region (dcontext=0x4131e880,

base=0x7fa5ec728000 "\304\371\361\377\224\351\377\377\364\371\361\377\254\351\377\377\244\372\361\377\324\351\377\377\304\372\361\377\354\351\377\377t\375\361\377\024\352\377\377\224\375\361\377\064\352\377\377\264\375\361\377T\352\377\377\304\375\361\377l\352\377\377\304\376\361\377\214\352\377\377\324\v\362\377\264\352\377\377\004\017\362\377\334\352\377\377\304\020\362\377\374\352\377\377\344\020\362\377\034\353\377\377\004\021\362\377<\353\377\377\024\021\362\377T\353\377\377D\023\362\377|\353\377\377d\023\362\377\224\353\377\377\004\024\362\377\264\353\377\377\024\024\362\377\314\353\377\377d\024\362\377\354\353\377\377\064\027\362\377\024\354\377\377d\027\362\377,\354\377\377\304\032\362\377T\354\377\377\364\033\362\377|\354\377\377\344%\362\377\244\354\377\377"..., size=212992, own_initexit_lock=false, 
free_futures=false) at core/fragment.c:6968

16 0x00000000711ca317 in app_memory_protection_change (dcontext=0x4131e880,

base=0x7fa5ec728000 "\304\371\361\377\224\351\377\377\364\371\361\377\254\351\377\377\244\372\361\377\324\351\377\377\304\372\361\377\354\351\377\377t\375\361\377\024\352\377\377\224\375\361\377\064\352\377\377\264\375\361\377T\352\377\377\304\375\361\377l\352\377\377\304\376\361\377\214\352\377\377\324\v\362\377\264\352\377\377\004\017\362\377\334\352\377\377\304\020\362\377\374\352\377\377\344\020\362\377\034\353\377\377\004\021\362\377<\353\377\377\024\021\362\377T\353\377\377D\023\362\377|\353\377\377d\023\362\377\224\353\377\377\004\024\362\377\264\353\377\377\024\024\362\377\314\353\377\377d\024\362\377\354\353\377\377\064\027\362\377\024\354\377\377d\027\362\377,\354\377\377\304\032\362\377T\354\377\377\364\033\362\377|\354\377\377\344%\362\377\244\354\377\377"..., size=212992, prot=3, new_memprot=0x4136ec8c, 
old_memprot=0x0) at core/vmareas.c:6532

17 0x00000000712d42b2 in process_mmap (dcontext=0x4131e880,

base=0x7fa5ec728000 "\304\371\361\377\224\351\377\377\364\371\361\377\254\351\377\377\244\372\361\377\324\351\377\377\304\372\361\377\354\351\377\377t\375\361\377\024\352\377\377\224\375\361\377\064\352\377\377\264\375\361\377T\352\377\377\304\375\361\377l\352\377\377\304\376\361\377\214\352\377\377\324\v\362\377\264\352\377\377\004\017\362\377\334\352\3---Type <return> to continue, or q <return> to quit---

77\377\304\020\362\377\374\352\377\377\344\020\362\377\034\353\377\377\004\021\362\377<\353\377\377\024\021\362\377T\353\377\377D\023\362\377|\353\377\377d\023\362\377\224\353\377\377\004\024\362\377\264\353\377\377\024\024\362\377\314\353\377\377d\024\362\377\354\353\377\377\064\027\362\377\024\354\377\377d\027\362\377,\354\377\377\304\032\362\377T\354\377\377\364\033\362\377|\354\377\377\344%\362\377\244\354\377\377"..., size=212992, prot=3, flags=2066, map_type=0x71376acf "ELF SO") at core/linux/os.c:6547

18 0x00000000712d4edb in post_system_call (dcontext=0x4131e880)

at core/linux/os.c:6790

19 0x000000007110d2a0 in handle_post_system_call (dcontext=0x4131e880)

at core/dispatch.c:1888

20 0x0000000071104d85 in dispatch_enter_dynamorio (dcontext=0x4131e880)

at core/dispatch.c:745

21 0x000000007110182e in dispatch (dcontext=0x4131e880) at core/dispatch.c:143

derekbruening commented 9 years ago

From bruen...@google.com on February 11, 2013 13:58:21

Summary: ASSERT (DRT+ASan when pcache is enabled) vmareas.c:1255 info->cache==NULL (was: Fails on DRT+ASan in Debug build when pcache is enabled)