I tried to debug it with gdb.
Result:
in this line:

memset( reserved_base, 0, lspace_size );

I want to fill reserved_base.
reserved_base = 0xdfff8000
lspace_size = 4194304 (400000 in hex)

my process memory map:
...
0008fff7000 1310692K -----   [ anon ]
000dfff0000     32K -----   [ anon ]
000dfff8000   4096K rw---   [ anon ]
000e03f8000 520224K -----   [ anon ]
00100000000 2145648604K -----   [ anon ]
2008fff7000 15032123396K rw---   [ anon ]
...

java heap start this -> 000dfff8000   4096K rw---   [ anon ]
java heap size = 4194304 bytes
All ok.
I simply want to fill it with zero.

next my step by step gdb ouput:

__asan_memset (block=0xdfff8000, c=0, size=4194304)
    at 
/home/dbezheckov/waratek/tests/asan/sources/llvm/projects/compiler-rt/lib/asan/asan_interceptors.cc:431
431   ASAN_MEMSET_IMPL(nullptr, block, c, size);
(gdb) step
QuickCheckForUnpoisonedRegion (size=4194304, beg=3758063616)
    at 
/home/dbezheckov/waratek/tests/asan/sources/llvm/projects/compiler-rt/lib/asan/asan_interceptors.cc:34
34   if (size == 0) return true;
(gdb) step
__asan_memset (block=0xdfff8000, c=0, size=4194304)
    at 
/home/dbezheckov/waratek/tests/asan/sources/llvm/projects/compiler-rt/lib/asan/asan_interceptors.cc:431
431   ASAN_MEMSET_IMPL(nullptr, block, c, size);
(gdb) step
QuickCheckForUnpoisonedRegion (size=4194304, beg=3758063616)
    at 
/home/dbezheckov/waratek/tests/asan/sources/llvm/projects/compiler-rt/lib/asan/asan_interceptors.cc:35
35   if (size <= 32)
(gdb) p size
$5 = 4194304
(gdb) step 
__asan_memset (block=0xdfff8000, c=0, size=4194304)
    at 
/home/dbezheckov/waratek/tests/asan/sources/llvm/projects/compiler-rt/lib/asan/asan_interceptors.cc:431
431   ASAN_MEMSET_IMPL(nullptr, block, c, size);
(gdb) step
__asan_region_is_poisoned (beg=4194304, size=4194304)
    at 
/home/dbezheckov/waratek/tests/asan/sources/llvm/projects/compiler-rt/lib/asan/asan_poisoning.cc:186
186   if (!size) return 0;
(gdb) p size
$6 = 4194304

My question is - why __asan_region_is_poisoned be called with beg = 
4194304, why not beg=0x000dfff8000?


On Thursday, May 28, 2015 at 1:15:34 AM UTC+6, Yuri Gribov wrote:
>
> On Wed, May 27, 2015 at 1:52 PM, Dmitriy - <[email protected] 
> <javascript:>> wrote:
>
>> Hello all.
>> I try using ASan for debug jvm.
>>
>> All .so library in jvm instrumented with ASan.
>> But, I have some error here:
>>
>> LD_PRELOAD=/usr/lib/libclang_rt.asan-x86_64.so 
>> LD_LIBRARY_PATH=./dist/jdk_7/debug/open/jdk/jre/lib/amd64/drlvm/ 
>> ./dist/jdk_7/debug/open/jdk/jre/bin/java -XX:-UseG1GC -version
>> =================================================================
>> ==24418==ERROR: AddressSanitizer: unknown-crash on address 0x0000dfff8000 
>> at pc 0x7f6c2e9ab3d9 bp 0x7f6c28773960 sp 0x7f6c28773110
>> WRITE of size 4194304 at 0x0000dfff8000 thread T1
>>     #0 0x7f6c2e9ab3d8 in __asan_memset 
>> /home/dbezheckov/waratek/tests/asan/sources/llvm/projects/compiler-rt/lib/asan/asan_interceptors.cc:431
>>     #1 0x7f6c12fbd7d5 in lspace_initialize(GC*, void*, unsigned long) 
>> /home/dbezheckov/waratek/harmony-custom/drlvm/vm/gc_gen/src/los/lspace.cpp:44:5
>>     #2 0x7f6c12f9fc8c in gc_los_initialize(GC_Gen*, void*, unsigned long) 
>> /home/dbezheckov/waratek/harmony-custom/drlvm/vm/gc_gen/src/gen/gen.cpp:476:24
>>     #3 0x7f6c12f9f63f in gc_gen_initialize(GC_Gen*, unsigned long, 
>> unsigned long) 
>> /home/dbezheckov/waratek/harmony-custom/drlvm/vm/gc_gen/src/gen/gen.cpp:313:5
>>     #4 0x7f6c12f848eb in gc_init 
>> /home/dbezheckov/waratek/harmony-custom/drlvm/vm/gc_gen/src/common/gc_for_vm.cpp:104:5
>>     #5 0x7f6c29cc9623 in vm_init1(JavaVM_Internal*, JavaVMInitArgs*, 
>> JNIEnv_External**) 
>> /home/dbezheckov/waratek/harmony-custom/drlvm/vm/vmcore/src/init/vm_init.cpp:796:14
>>     #6 0x7f6c29b27f2c in JNI_CreateJavaVM 
>> /home/dbezheckov/waratek/harmony-custom/drlvm/vm/vmcore/src/jni/jni.cpp:436:19
>>     #7 0x7f6c29b286b4 in CVMI_CreateJavaVM 
>> /home/dbezheckov/waratek/harmony-custom/drlvm/vm/vmcore/src/jni/jni.cpp:526:12
>>     #8 0x7f6c2abd0634 in JNI_CreateJavaVM 
>> /home/dbezheckov/waratek/harmony-custom/drlvm/vm/openjdk/src/openjdk.cpp:90:12
>>     #9 0x7f6c2e6fdb47 
>>  
>> (/home/dbezheckov/waratek/harmony-custom/dist/jdk_7/debug/open/jdk/jre/bin/../lib/amd64/jli/libjli.so+0x2b47)
>>     #10 0x7f6c2df1c181 in start_thread 
>> /build/buildd/eglibc-2.19/nptl/pthread_create.c:312
>>     #11 0x7f6c2e43047c in clone 
>> /build/buildd/eglibc-2.19/misc/../sysdeps/unix/sysv/linux/x86_64/clone.S:111
>>
>
> I don't think this rings any bells. Do you could try to analyze backtrace 
> with gdb? You could use sleep_before_dying to attach to process on error.
>
> -Y
>

-- 
You received this message because you are subscribed to the Google Groups 
"address-sanitizer" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to