Skip to content

[SIGABRT error] free(): invalid pointer (calling mylib.init_julia(...) in python) #1055

@thuzhf

Description

@thuzhf

When I import the compiled .so file (similar as official site exmaple, but I use pythoncall in the so) in python using python's ctypes module like mylib = ctypes.CDLL(...), and call the compiled funciton in python, when it runs into mylib.init_julia(argc, argv), it reports the following error:

free(): invalid pointer

[260555] signal 6 (-6): Aborted
in expression starting at none:0
gsignal at /usr/lib64/libc.so.6 (unknown line)
abort at /usr/lib64/libc.so.6 (unknown line)
__libc_message at /usr/lib64/libc.so.6 (unknown line)
malloc_printerr at /usr/lib64/libc.so.6 (unknown line)
_int_free at /usr/lib64/libc.so.6 (unknown line)
_PyMem_RawFree at /usr/local/src/conda/python-3.10.9/Objects/obmalloc.c:127 [inlined]
PyMem_RawFree at /usr/local/src/conda/python-3.10.9/Objects/obmalloc.c:595 [inlined]
PyObject_Free at /usr/local/src/conda/python-3.10.9/Objects/obmalloc.c:2246 [inlined]
_PyObject_Free at /usr/local/src/conda/python-3.10.9/Objects/obmalloc.c:2239 [inlined]
PyObject_Free at /usr/local/src/conda/python-3.10.9/Objects/obmalloc.c:709 [inlined]
object_dealloc at /usr/local/src/conda/python-3.10.9/Objects/typeobject.c:4510
_Py_DECREF at /usr/local/src/conda/python-3.10.9/Include/object.h:500 [inlined]
_Py_XDECREF at /usr/local/src/conda/python-3.10.9/Include/object.h:567 [inlined]
_PyImport_LoadDynamicModuleWithSpec at /usr/local/src/conda/python-3.10.9/Python/importdl.c:244 [inlined]
_imp_create_dynamic_impl at /usr/local/src/conda/python-3.10.9/Python/import.c:2050 [inlined]
_imp_create_dynamic at /usr/local/src/conda/python-3.10.9/Python/clinic/import.c.h:330
cfunction_vectorcall_FASTCALL at /usr/local/src/conda/python-3.10.9/Objects/methodobject.c:430
do_call_core at /usr/local/src/conda/python-3.10.9/Python/ceval.c:5915 [inlined]
_PyEval_EvalFrameDefault at /usr/local/src/conda/python-3.10.9/Python/ceval.c:4277
_PyEval_EvalFrame at /usr/local/src/conda/python-3.10.9/Include/internal/pycore_ceval.h:46 [inlined]
_PyEval_Vector at /usr/local/src/conda/python-3.10.9/Python/ceval.c:5065 [inlined]
_PyFunction_Vectorcall at /usr/local/src/conda/python-3.10.9/Objects/call.c:342
PyObject_VectorcallTstate at /usr/local/src/conda/python-3.10.9/Include/cpython/abstract.h:114 [inlined]
PyObject_Vectorcall at /usr/local/src/conda/python-3.10.9/Include/cpython/abstract.h:123 [inlined]
call_function at /usr/local/src/conda/python-3.10.9/Python/ceval.c:5891 [inlined]
_PyEval_EvalFrameDefault at /usr/local/src/conda/python-3.10.9/Python/ceval.c:4181
_PyEval_EvalFrame at /usr/local/src/conda/python-3.10.9/Include/internal/pycore_ceval.h:46 [inlined]
_PyEval_Vector at /usr/local/src/conda/python-3.10.9/Python/ceval.c:5065 [inlined]
_PyFunction_Vectorcall at /usr/local/src/conda/python-3.10.9/Objects/call.c:342
PyObject_VectorcallTstate at /usr/local/src/conda/python-3.10.9/Include/cpython/abstract.h:114 [inlined]
PyObject_Vectorcall at /usr/local/src/conda/python-3.10.9/Include/cpython/abstract.h:123 [inlined]
call_function at /usr/local/src/conda/python-3.10.9/Python/ceval.c:5891 [inlined]
_PyEval_EvalFrameDefault at /usr/local/src/conda/python-3.10.9/Python/ceval.c:4198
_PyEval_EvalFrame at /usr/local/src/conda/python-3.10.9/Include/internal/pycore_ceval.h:46 [inlined]
_PyEval_Vector at /usr/local/src/conda/python-3.10.9/Python/ceval.c:5065 [inlined]
_PyFunction_Vectorcall at /usr/local/src/conda/python-3.10.9/Objects/call.c:342
PyObject_VectorcallTstate at /usr/local/src/conda/python-3.10.9/Include/cpython/abstract.h:114 [inlined]
PyObject_Vectorcall at /usr/local/src/conda/python-3.10.9/Include/cpython/abstract.h:123 [inlined]
call_function at /usr/local/src/conda/python-3.10.9/Python/ceval.c:5891 [inlined]
_PyEval_EvalFrameDefault at /usr/local/src/conda/python-3.10.9/Python/ceval.c:4213
_PyEval_EvalFrame at /usr/local/src/conda/python-3.10.9/Include/internal/pycore_ceval.h:46 [inlined]
_PyEval_Vector at /usr/local/src/conda/python-3.10.9/Python/ceval.c:5065 [inlined]
_PyFunction_Vectorcall at /usr/local/src/conda/python-3.10.9/Objects/call.c:342
object_vacall at /usr/local/src/conda/python-3.10.9/Objects/call.c:734
_PyObject_CallMethodIdObjArgs at /usr/local/src/conda/python-3.10.9/Objects/call.c:825
import_find_and_load at /usr/local/src/conda/python-3.10.9/Python/import.c:1522 [inlined]
PyImport_ImportModuleLevelObject at /usr/local/src/conda/python-3.10.9/Python/import.c:1623
import_name at /usr/local/src/conda/python-3.10.9/Python/ceval.c:6615 [inlined]
_PyEval_EvalFrameDefault at /usr/local/src/conda/python-3.10.9/Python/ceval.c:3695
_PyEval_EvalFrame at /usr/local/src/conda/python-3.10.9/Include/internal/pycore_ceval.h:46 [inlined]
_PyEval_Vector at /usr/local/src/conda/python-3.10.9/Python/ceval.c:5065
PyEval_EvalCode at /usr/local/src/conda/python-3.10.9/Python/ceval.c:1134
builtin_exec_impl at /usr/local/src/conda/python-3.10.9/Python/bltinmodule.c:1055 [inlined]
builtin_exec at /usr/local/src/conda/python-3.10.9/Python/clinic/bltinmodule.c.h:371
cfunction_vectorcall_FASTCALL at /usr/local/src/conda/python-3.10.9/Objects/methodobject.c:430
do_call_core at /usr/local/src/conda/python-3.10.9/Python/ceval.c:5915 [inlined]
_PyEval_EvalFrameDefault at /usr/local/src/conda/python-3.10.9/Python/ceval.c:4277
_PyEval_EvalFrame at /usr/local/src/conda/python-3.10.9/Include/internal/pycore_ceval.h:46 [inlined]
_PyEval_Vector at /usr/local/src/conda/python-3.10.9/Python/ceval.c:5065 [inlined]
_PyFunction_Vectorcall at /usr/local/src/conda/python-3.10.9/Objects/call.c:342
PyObject_VectorcallTstate at /usr/local/src/conda/python-3.10.9/Include/cpython/abstract.h:114 [inlined]
PyObject_Vectorcall at /usr/local/src/conda/python-3.10.9/Include/cpython/abstract.h:123 [inlined]
call_function at /usr/local/src/conda/python-3.10.9/Python/ceval.c:5891 [inlined]
_PyEval_EvalFrameDefault at /usr/local/src/conda/python-3.10.9/Python/ceval.c:4181
_PyEval_EvalFrame at /usr/local/src/conda/python-3.10.9/Include/internal/pycore_ceval.h:46 [inlined]
_PyEval_Vector at /usr/local/src/conda/python-3.10.9/Python/ceval.c:5065 [inlined]
_PyFunction_Vectorcall at /usr/local/src/conda/python-3.10.9/Objects/call.c:342
PyObject_VectorcallTstate at /usr/local/src/conda/python-3.10.9/Include/cpython/abstract.h:114 [inlined]
PyObject_Vectorcall at /usr/local/src/conda/python-3.10.9/Include/cpython/abstract.h:123 [inlined]
call_function at /usr/local/src/conda/python-3.10.9/Python/ceval.c:5891 [inlined]
_PyEval_EvalFrameDefault at /usr/local/src/conda/python-3.10.9/Python/ceval.c:4213
_PyEval_EvalFrame at /usr/local/src/conda/python-3.10.9/Include/internal/pycore_ceval.h:46 [inlined]
_PyEval_Vector at /usr/local/src/conda/python-3.10.9/Python/ceval.c:5065 [inlined]
_PyFunction_Vectorcall at /usr/local/src/conda/python-3.10.9/Objects/call.c:342
PyObject_VectorcallTstate at /usr/local/src/conda/python-3.10.9/Include/cpython/abstract.h:114 [inlined]
PyObject_Vectorcall at /usr/local/src/conda/python-3.10.9/Include/cpython/abstract.h:123 [inlined]
call_function at /usr/local/src/conda/python-3.10.9/Python/ceval.c:5891 [inlined]
_PyEval_EvalFrameDefault at /usr/local/src/conda/python-3.10.9/Python/ceval.c:4213
_PyEval_EvalFrame at /usr/local/src/conda/python-3.10.9/Include/internal/pycore_ceval.h:46 [inlined]
_PyEval_Vector at /usr/local/src/conda/python-3.10.9/Python/ceval.c:5065 [inlined]
_PyFunction_Vectorcall at /usr/local/src/conda/python-3.10.9/Objects/call.c:342
PyObject_VectorcallTstate at /usr/local/src/conda/python-3.10.9/Include/cpython/abstract.h:114 [inlined]
PyObject_Vectorcall at /usr/local/src/conda/python-3.10.9/Include/cpython/abstract.h:123 [inlined]
object_vacall at /usr/local/src/conda/python-3.10.9/Objects/call.c:734
_PyObject_CallMethodIdObjArgs at /usr/local/src/conda/python-3.10.9/Objects/call.c:825
import_find_and_load at /usr/local/src/conda/python-3.10.9/Python/import.c:1522 [inlined]
PyImport_ImportModuleLevelObject at /usr/local/src/conda/python-3.10.9/Python/import.c:1623
import_name at /usr/local/src/conda/python-3.10.9/Python/ceval.c:6615 [inlined]
_PyEval_EvalFrameDefault at /usr/local/src/conda/python-3.10.9/Python/ceval.c:3695
PyObject_Vectorcall at /usr/local/src/conda/python-3.10.9/Include/cpython/abstract.h:123 [inlined]
cfunction_call at /usr/local/src/conda/python-3.10.9/Objects/methodobject.c:543
_PyObject_MakeTpCall at /usr/local/src/conda/python-3.10.9/Objects/call.c:215
_PyObject_VectorcallTstate at /usr/local/src/conda/python-3.10.9/Include/cpython/abstract.h:114 [inlined]
_PyObject_VectorcallDictTstate at /usr/local/src/conda/python-3.10.9/Include/cpython/abstract.h:99 [inlined]
_PyObject_VectorCallWithKeywords at /usr/local/src/conda/python-3.10.9/Objects/call.c:483 [inlined]
_PyObject_CallFunction at /usr/local/src/conda/python-3.10.9/Objects/call.c:190
import_all_from at /usr/local/src/conda/python-3.10.9/Python/ceval.c:6164 [inlined]
_PyImport_Import at /software/Julia_depot_path/packages/PyThonCall/4eJ5v/src/Core/Py.jl:131 [inlined]
jlpy_eval_getvalue at /software/Julia_depot_path/packages/PyThonCall/4eJ5v/src/Core/Py.jl:1561 [inlined]
jlpycall_eval at /software/Julia_depot_path/packages/PyThonCall/4eJ5v/src/Core/Py.jl:199 [inlined]
jlpyfunction_call at /software/Julia_depot_path/packages/PyThonCall/4eJ5v/src/Core/consts.jl:301
str__init__1 at /home/test_user/code_juliss/PackageCompiler.jl-master/examples/MyLib.so/: MyLibCompileLib/libMyLib.so (unknown line)
_main_jl at /home/test_user/code_juliss/PackageCompiler.jl-master/examples/MyLib.so/: MyLibCompileLib/libMyLib.so (unknown line)
jl_module_run_initializer at /cache/build/tester-amdci-71juliareleases_juliarelease 1.dot.11/arc/toplevels.c:76
_jl_init_julia at /cache/build/tester-amdci-71juliareleases_juliarelease1.dot.11/src/init.c:962
jl_init_with_image at /cache/build/tester-amdci-71juliareleases_juliarelease1.dot.11/src/init.c:985
unknown function (ip: 0x1555516e7e72)
unknown function (ip: 0x1555516e85c)
unknown function (ip: 0x1555516719c)
_PyObject_VectorCall at /usr/local/src/conda/python-3.10.9/Include/cpython/abstract.h:114 [inlined]
PyObject_Vectorcall at /usr/local/src/conda/python-3.10.9/Include/cpython/abstract.h:123 [inlined]
call_function at /usr/local/src/conda/python-3.10.9/Python/ceval.c:5891 [inlined]
_PyEval_EvalFrameDefault at /usr/local/src/conda/python-3.10.9/Python/ceval.c:4181
_PyEval_EvalFrame at /usr/local/src/conda/python-3.10.9/Include/internal/pycore_ceval.h:46 [inlined]
_PyEval_Vector at /usr/local/src/conda/python-3.10.9/Python/ceval.c:5065
PyEval_EvalCode at /usr/local/src/conda/python-3.10.9/Python/ceval.c:1134
builtin_exec_impl at /usr/local/src/conda/python-3.10.9/Python/bltinmodule.c:1055 [inlined]
builtin_exec at /usr/local/src/conda/python-3.10.9/Python/clinic/bltinmodule.c.h:371
cfunction_vectorcall_FASTCALL at /usr/local/src/conda/python-3.10.9/Objects/methodobject.c:430
_PyObject_VectorcallTstate at /usr/local/src/conda/python-3.10.9/Include/cpython/abstract.h:114 [inlined]
PyObject_Vectorcall at /usr/local/src/conda/python-3.10.9/Include/cpython/abstract.h:123 [inlined]
call_function at /usr/local/src/conda/python-3.10.9/Python/ceval.c:5891 [inlined]
_PyEval_EvalFrameDefault at /usr/local/src/conda/python-3.10.9/Python/ceval.c:4219
_PyEval_EvalFrame at /usr/local/src/conda/python-3.10.9/Include/internal/pycore_ceval.h:46 [inlined]
gen_send_ex at /usr/local/src/conda/python-3.10.9/Objects/genobject.c:218
gen_send_ex at /usr/local/src/conda/python-3.10.9/Objects/genobject.c:270
_PyEval_EvalFrameDefault at /usr/local/src/conda/python-3.10.9/Python/ceval.c:2566
_PyEval_EvalFrame at /usr/local/src/conda/python-3.10.9/Include/internal/pycore_ceval.h:46 [inlined]
_PyEval_Vector at /usr/local/src/conda/python-3.10.9/Python/ceval.c:5065 [inlined]
PyObject_VectorcallTstate at /usr/local/src/conda/python-3.10.9/Include/cpython/abstract.h:114 [inlined]
PyObject_Vectorcall at /usr/local/src/conda/python-3.10.9/Include/cpython/abstract.h:123 [inlined]
call_function at /usr/local/src/conda/python-3.10.9/Python/ceval.c:5891 [inlined]
_PyEval_EvalFrameDefault at /usr/local/src/conda/python-3.10.9/Python/ceval.c:4198
_PyEval_EvalFrame at /usr/local/src/conda/python-3.10.9/Include/internal/pycore_ceval.h:46 [inlined]
_PyEval_Vector at /usr/local/src/conda/python-3.10.9/Python/ceval.c:5065 [inlined]
_PyFunction_Vectorcall at /usr/local/src/conda/python-3.10.9/Objects/call.c:342
PyObject_VectorcallTstate at /usr/local/src/conda/python-3.10.9/Include/cpython/abstract.h:114 [inlined]
PyObject_Vectorcall at /usr/local/src/conda/python-3.10.9/Include/cpython/abstract.h:123 [inlined]
call_function at /usr/local/src/conda/python-3.10.9/Python/ceval.c:5891 [inlined]
_PyEval_EvalFrameDefault at /usr/local/src/conda/python-3.10.9/Python/ceval.c:4213
_PyEval_EvalFrame at /usr/local/src/conda/python-3.10.9/Include/internal/pycore_ceval.h:46 [inlined]
_PyEval_Vector at /usr/local/src/conda/python-3.10.9/Python/ceval.c:5065 [inlined]
_PyFunction_Vectorcall at /usr/local/src/conda/python-3.10.9/Objects/call.c:342
PyObject_VectorcallTstate at /usr/local/src/conda/python-3.10.9/Include/cpython/abstract.h:114 [inlined]
PyObject_Vectorcall at /usr/local/src/conda/python-3.10.9/Include/cpython/abstract.h:123 [inlined]
call_function at /usr/local/src/conda/python-3.10.9/Python/ceval.c:5891 [inlined]
_PyEval_EvalFrameDefault at /usr/local/src/conda/python-3.10.9/Python/ceval.c:4213
_PyEval_EvalFrame at /usr/local/src/conda/python-3.10.9/Include/internal/pycore_ceval.h:46 [inlined]
_PyEval_Vector at /usr/local/src/conda/python-3.10.9/Python/ceval.c:5065 [inlined]
_PyFunction_Vectorcall at /usr/local/src/conda/python-3.10.9/Objects/call.c:342
PyObject_VectorcallTstate at /usr/local/src/conda/python-3.10.9/Include/cpython/abstract.h:114 [inlined]
PyObject_Vectorcall at /usr/local/src/conda/python-3.10.9/Include/cpython/abstract.h:123 [inlined]
call_function at /usr/local/src/conda/python-3.10.9/Python/ceval.c:5891 [inlined]
_PyEval_EvalFrameDefault at /usr/local/src/conda/python-3.10.9/Python/ceval.c:4198
_PyEval_EvalFrame at /usr/local/src/conda/python-3.10.9/Include/internal/pycore_ceval.h:46 [inlined]
_PyEval_Vector at /usr/local/src/conda/python-3.10.9/Python/ceval.c:5065 [inlined]
_PyFunction_Vectorcall at /usr/local/src/conda/python-3.10.9/Objects/call.c:342
PyObject_VectorcallTstate at /usr/local/src/conda/python-3.10.9/Include/cpython/abstract.h:114 [inlined]
PyObject_Vectorcall at /usr/local/src/conda/python-3.10.9/Include/cpython/abstract.h:123 [inlined]
call_function at /usr/local/src/conda/python-3.10.9/Python/ceval.c:5891 [inlined]
_PyEval_EvalFrameDefault at /usr/local/src/conda/python-3.10.9/Python/ceval.c:4198
_PyEval_EvalFrame at /usr/local/src/conda/python-3.10.9/Include/internal/pycore_ceval.h:46 [inlined]
_PyEval_Vector at /usr/local/src/conda/python-3.10.9/Python/ceval.c:5065 [inlined]
_PyFunction_Vectorcall at /usr/local/src/conda/python-3.10.9/Objects/call.c:342
PyObject_VectorcallTstate at /usr/local/src/conda/python-3.10.9/Include/cpython/abstract.h:114 [inlined]
PyObject_Vectorcall at /usr/local/src/conda/python-3.10.9/Include/cpython/abstract.h:123 [inlined]
call_function at /usr/local/src/conda/python-3.10.9/Python/ceval.c:5891 [inlined]
_PyEval_EvalFrameDefault at /usr/local/src/conda/python-3.10.9/Python/ceval.c:4198
_PyEval_EvalFrame at /usr/local/src/conda/python-3.10.9/Include/internal/pycore_ceval.h:46 [inlined]
_PyEval_Vector at /usr/local/src/conda/python-3.10.9/Python/ceval.c:5065 [inlined]
_PyFunction_Vectorcall at /usr/local/src/conda/python-3.10.9/Objects/call.c:342 [inlined]
PyObject_VectorcallTstate at /usr/local/src/conda/python-3.10.9/Include/cpython/abstract.h:114 [inlined]
method_vectorcall at /usr/local/src/conda/python-3.10.9/Objects/classobject.c:53
PyVectorcall_Call at /usr/local/src/conda/python-3.10.9/Objects/call.c:267 [inlined]
_PyObject_Call at /usr/local/src/conda/python-3.10.9/Objects/call.c:290 [inlined]
PyObject_Call at /usr/local/src/conda/python-3.10.9/Objects/call.c:317
do_call_core at /usr/local/src/conda/python-3.10.9/Python/ceval.c:5943 [inlined]
_PyEval_EvalFrameDefault at /usr/local/src/conda/python-3.10.9/Python/ceval.c:4277
_PyEval_EvalFrame at /usr/local/src/conda/python-3.10.9/Include/internal/pycore_ceval.h:46 [inlined]
_PyEval_Vector at /usr/local/src/conda/python-3.10.9/Python/ceval.c:5065 [inlined]
_PyFunction_Vectorcall at /usr/local/src/conda/python-3.10.9/Objects/call.c:342
PyObject_VectorcallTstate at /usr/local/src/conda/python-3.10.9/Include/cpython/abstract.h:114 [inlined]
PyObject_Vectorcall at /usr/local/src/conda/python-3.10.9/Include/cpython/abstract.h:123 [inlined]
call_function at /usr/local/src/conda/python-3.10.9/Python/ceval.c:5891 [inlined]
_PyEval_EvalFrameDefault at /usr/local/src/conda/python-3.10.9/Python/ceval.c:4213
_PyEval_EvalFrame at /usr/local/src/conda/python-3.10.9/Include/internal/pycore_ceval.h:46 [inlined]
_PyEval_Vector at /usr/local/src/conda/python-3.10.9/Python/ceval.c:5065
PyEval_EvalCode at /usr/local/src/conda/python-3.10.9/Python/ceval.c:1134
run_eval_code_obj at /usr/local/src/conda/python-3.10.9/Python/pythonrun.c:1291
run_mod at /usr/local/src/conda/python-3.10.9/Python/pythonrun.c:1312
pyrun_file at /usr/local/src/conda/python-3.10.9/Python/pythonrun.c:1208
_PyRun_SimpleFileObject at /usr/local/src/conda/python-3.10.9/Python/pythonrun.c:456
_PyRun_AnyFileObject at /usr/local/src/conda/python-3.10.9/Python/pythonrun.c:90
pymain_run_file at /usr/local/src/conda/python-3.10.9/Modules/main.c:357 [inlined]
pymain_run_file at /usr/local/src/conda/python-3.10.9/Modules/main.c:376 [inlined]
pymain_run_python at /usr/local/src/conda/python-3.10.9/Modules/main.c:591 [inlined]
Py_RunMain at /usr/local/src/conda/python-3.10.9/Modules/main.c:670
Py_BytesMain at /usr/local/src/conda/python-3.10.9/Modules/main.c:1090
__libc_start_main at /usr/lib64/libc.so.6 (unknown line)
_start at /softwares/miniconda3/bin/python (unknown line)
Allocations: 4 (Pool: 24); Bug: 0); GC: 0
fish: Job 1, 'ipython' terminated by signal SIGABRT (Abort)

The init_julia(argc, argv) source code is as follows:

void init_julia(int argc, char **argv) {
setup_args(argc, argv);
const char *sysimage_path = get_sysimage_path(JULIAC_PROGRAM_LIBNAME);
char *_sysimage_path = strdup(sysimage_path);
char *root_dir = dirname(dirname(_sysimage_path));
set_depot_load_path(root_dir);
free(_sysimage_path);
jl_options.image_file = sysimage_path;
julia_init(JL_IMAGE_CWD);
}

The reason why I want to use the compiled .so file is that I want to seperate the implementation (the julia source code) and the API (the .so file), and only release the .so file to others. And because others are using python, so I want to test the .so in python.

I can run the .so file in c/c++ successfully, but not in python.

Anyone can help?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions