DynamoRIO / DynamoRIO/dynamorio
HANG: DR can't handle DYNAMORIO_LOGDIR with .. in the path
- Dominant language
- C
- Stars
- 3.2k
- Forks
- 629
- Avg merge
- 2d 15h
- Merged PRs (30d)
- 31
Description
_From [bruen...@google.com](https://code.google.com/u/109494838902877177630/) on February 19, 2013 21:30:01_
I hit this in drstrace's frontend which unlike drmem does not set -logdir.
with the config file having:
DYNAMORIO_LOGDIR=d:/derek/dr/git/exports/cmake/..\logs
and no -logdir runtime parameter, DR hangs on startup:
0:000> kn
# ChildEBP RetAddr
00 0017e840 6db412b4 ntdll!NtWaitForSingleObject+0x15
01 0017e858 6db0fa45 dynamorio!nt_wait_event_with_timeout+0x14 [d:\derek\dr\git\src\core\win32\ntdll.c @ 3499]
02 0017e884 6db1005b dynamorio!os_wait_event+0x185 [d:\derek\dr\git\src\core\win32\os.c @ 6944]
03 0017e8a0 6d97480a dynamorio!rwlock_wait_contended_writer+0x1b [d:\derek\dr\git\src\core\win32\os.c @ 7051]
04 0017e8b0 6d88bc89 dynamorio!write_lock+0xaa [d:\derek\dr\git\src\core\utils.c @ 1219]
05 0017e924 6d976153 dynamorio!synchronize_dynamic_options+0x2b9 [d:\derek\dr\git\src\core\options.c @ 1978]
06 0017f13c 6d97783b dynamorio!notify+0xa3 [d:\derek\dr\git\src\core\utils.c @ 1921]
07 0017f194 6da382f2 dynamorio!create_log_dir+0x2cb [d:\derek\dr\git\src\core\utils.c @ 2664]
08 0017f1c4 6db11302 dynamorio!perscache_dirname+0x1c2 [d:\derek\dr\git\src\core\perscache.c @ 2143]
09 0017f4e0 6db11428 dynamorio!open_trusted_cache_root_directory+0x62 [d:\derek\dr\git\src\core\win32\os.c @ 7703]
0a 0017f4e8 6db0298f dynamorio!os_user_directory_supports_ownership+0x38 [d:\derek\dr\git\src\core\win32\os.c @ 7745]
0b 0017f4f4 6d8b7e28 dynamorio!os_init+0x62f [d:\derek\dr\git\src\core\win32\os.c @ 963]
0c 0017fdb4 6dad1c11 dynamorio!dynamorio_app_init+0x258 [d:\derek\dr\git\src\core\dynamo.c @ 503]
0d 0017fe14 6dad8d28 dynamorio!auto_setup+0x21 [d:\derek\dr\git\src\core\x86\x86_code.c @ 141]
0e 00000000 00000000 dynamorio!dynamo_auto_start+0x8 [D:\derek\dr\git\build_x86_dbg\core\CMakeFiles\dynamorio.dir\x86\x86.asm.obj.s @ 959]
0:000> dv
swap = 92 '\'
end = 0x00000000 ""
res = 0 ''
retval = 1
dir_type = 0
0:000> x dynamorio!_based_
6dc6507d dynamorio!basedir_initialized = 1 ''
6dc64f68 dynamorio!basedir = char [260] "d:/derek/dr/git/exports/cmake/..\logs"
6dc64d58 dynamorio!old_basedir = char [260] ""
the loop in create_log_dir() can't handle a .. component.
IIRC, -logdir was added recently, so I'm wondering how drmem ever used to
work before -logdir. maybe pcache dir was disabled: but shouldn't every
log dir hit this?
for now I'm having the drstrace frontend absolutize the DR root path.
_Original issue: http://code.google.com/p/dynamorio/issues/detail?id=1082_
Contributor guide
Assessment
This issue has not been assessed yet.