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.