alibabacloud-jindodata icon indicating copy to clipboard operation
alibabacloud-jindodata copied to clipboard

通过 JNI 方式调用,ASAN 报错

Open Smith-Cruise opened this issue 1 year ago • 1 comments

==2496223==ERROR: AddressSanitizer: alloc-dealloc-mismatch (operator new vs free) on 0x60300060c070
    #0 0xcf4ca07 in free (/home/disk1/starrocks/output/be/lib/starrocks_be+0xcf4ca07)
    #1 0x7fa844d8ad32 in int JindoJniState::registerJniClassForInit<JindoNativeSystemClass>() (/tmp/libjindosdk-4384a5ce289bdd67_20230321_110550.so+0x38ad32)
    #2 0x7fa844c70823 in _GLOBAL__sub_I_JindoNative.cpp (/tmp/libjindosdk-4384a5ce289bdd67_20230321_110550.so+0x270823)
    #3 0x7fb684baa47d in call_init elf/dl-init.c:70
    #4 0x7fb684baa567 in call_init elf/dl-init.c:33
    #5 0x7fb684baa567 in _dl_init elf/dl-init.c:117
    #6 0x7fb6833d4c84 in __GI__dl_catch_exception elf/dl-error-skeleton.c:182
    #7 0x7fb684bb1ff5 in dl_open_worker elf/dl-open.c:808
    #8 0x7fb684bb1ff5 in dl_open_worker elf/dl-open.c:771
    #9 0x7fb6833d4c27 in __GI__dl_catch_exception elf/dl-error-skeleton.c:208
    #10 0x7fb684bb234d in _dl_open elf/dl-open.c:883
    #11 0x7fb6832f06bb in dlopen_doit dlfcn/dlopen.c:56
    #12 0x7fb6833d4c27 in __GI__dl_catch_exception elf/dl-error-skeleton.c:208
    #13 0x7fb6833d4cf2 in __GI__dl_catch_error elf/dl-error-skeleton.c:227
    #14 0x7fb6832f01ad in _dlerror_run dlfcn/dlerror.c:138
    #15 0x7fb6832f0747 in dlopen_implementation dlfcn/dlopen.c:71
    #16 0x7fb6832f0747 in ___dlopen dlfcn/dlopen.c:81
    #17 0xcee4fe2 in __interceptor_dlopen.part.0 (/home/disk1/starrocks/output/be/lib/starrocks_be+0xcee4fe2)
    #18 0x7fb6841fee30 in os::dll_load(char const*, char*, int) (/home/disk1/tools/jdk-11.0.2/lib/server/libjvm.so+0xbfee30)
    #19 0x7fb683f305c0 in JVM_LoadLibrary (/home/disk1/tools/jdk-11.0.2/lib/server/libjvm.so+0x9305c0)
    #20 0x7fb07720eeb7 in Java_java_lang_ClassLoader_00024NativeLibrary_load0 (/home/disk1/tools/jdk-11.0.2/lib/libjava.so+0xeeb7)
    #21 0x7fb05f668156  (<unknown module>)

是已知问题吗

Smith-Cruise avatar Mar 29 '23 07:03 Smith-Cruise

==2496223==ERROR: AddressSanitizer: alloc-dealloc-mismatch (operator new vs free) on 0x60300060c070
    #0 0xcf4ca07 in free (/home/disk1/starrocks/output/be/lib/starrocks_be+0xcf4ca07)
    #1 0x7fa844d8ad32 in int JindoJniState::registerJniClassForInit<JindoNativeSystemClass>() (/tmp/libjindosdk-4384a5ce289bdd67_20230321_110550.so+0x38ad32)
    #2 0x7fa844c70823 in _GLOBAL__sub_I_JindoNative.cpp (/tmp/libjindosdk-4384a5ce289bdd67_20230321_110550.so+0x270823)
    #3 0x7fb684baa47d in call_init elf/dl-init.c:70
    #4 0x7fb684baa567 in call_init elf/dl-init.c:33
    #5 0x7fb684baa567 in _dl_init elf/dl-init.c:117
    #6 0x7fb6833d4c84 in __GI__dl_catch_exception elf/dl-error-skeleton.c:182
    #7 0x7fb684bb1ff5 in dl_open_worker elf/dl-open.c:808
    #8 0x7fb684bb1ff5 in dl_open_worker elf/dl-open.c:771
    #9 0x7fb6833d4c27 in __GI__dl_catch_exception elf/dl-error-skeleton.c:208
    #10 0x7fb684bb234d in _dl_open elf/dl-open.c:883
    #11 0x7fb6832f06bb in dlopen_doit dlfcn/dlopen.c:56
    #12 0x7fb6833d4c27 in __GI__dl_catch_exception elf/dl-error-skeleton.c:208
    #13 0x7fb6833d4cf2 in __GI__dl_catch_error elf/dl-error-skeleton.c:227
    #14 0x7fb6832f01ad in _dlerror_run dlfcn/dlerror.c:138
    #15 0x7fb6832f0747 in dlopen_implementation dlfcn/dlopen.c:71
    #16 0x7fb6832f0747 in ___dlopen dlfcn/dlopen.c:81
    #17 0xcee4fe2 in __interceptor_dlopen.part.0 (/home/disk1/starrocks/output/be/lib/starrocks_be+0xcee4fe2)
    #18 0x7fb6841fee30 in os::dll_load(char const*, char*, int) (/home/disk1/tools/jdk-11.0.2/lib/server/libjvm.so+0xbfee30)
    #19 0x7fb683f305c0 in JVM_LoadLibrary (/home/disk1/tools/jdk-11.0.2/lib/server/libjvm.so+0x9305c0)
    #20 0x7fb07720eeb7 in Java_java_lang_ClassLoader_00024NativeLibrary_load0 (/home/disk1/tools/jdk-11.0.2/lib/libjava.so+0xeeb7)
    #21 0x7fb05f668156  (<unknown module>)

是已知问题吗

不是已知问题。registerJniClassForInit在jindo中是一个全局的static变量,里面存储的是jni回调函数的注册表。

怀疑可能是Static Initialization Order Fiasco引发的问题,不知道starocks be中是否也存在类似问题,导致了alloc-dealloc-mismatch。后续 jindo 会考虑引入Construct on first use避免该问题。

yanbinyang avatar Mar 29 '23 11:03 yanbinyang