felipenoris / Oracle.jl

Oracle Database driver for the Julia language.
https://felipenoris.github.io/Oracle.jl/stable
MIT License
35 stars 2 forks source link

Oracle.close: signal (11): Segmentation fault #27

Open walter-weinmann opened 3 years ago

walter-weinmann commented 3 years ago

Problem:

My Julia program opens 8 database connections one after the other and then closes them again. When closing the 3rd database connection, I get this segmentation error.

    for partition_key = 1:BENCHMARK_NUMBER_PARTITIONS
        Oracle.close(CONNECTIONS[partition_key])
    end

If I issue a message before and after the command, e.g. via Debug, then everything runs without problems.

    for partition_key = 1:BENCHMARK_NUMBER_PARTITIONS
        @debug "      $(function_name) Connection #$(partition_key) - to be closed"
        Oracle.close(CONNECTIONS[partition_key])
        @debug "      $(function_name) Connection #$(partition_key) - is now closed"
    end

System Environment:

Protocol:

signal (11): Segmentation fault
in expression starting at /home/walter/Projects/ora_bench/lang/julia/OraBenchOracle.jl:605
dpiConn__close at /home/walter/.julia/packages/Oracle/HDiQ4/deps/usr/lib/libdpi.so.4.1.0 (unknown line)
dpiConn_close at /home/walter/.julia/packages/Oracle/HDiQ4/deps/usr/lib/libdpi.so.4.1.0 (unknown line)
#dpiConn_close#5 at /home/walter/.julia/packages/Oracle/HDiQ4/src/odpi.jl:134 [inlined]
dpiConn_close##kw at /home/walter/.julia/packages/Oracle/HDiQ4/src/odpi.jl:133 [inlined]
#close#11 at /home/walter/.julia/packages/Oracle/HDiQ4/src/connection.jl:191
close at /home/walter/.julia/packages/Oracle/HDiQ4/src/connection.jl:191
_jl_invoke at /buildworker/worker/package_linux64/build/src/gf.c:2237 [inlined]
jl_apply_generic at /buildworker/worker/package_linux64/build/src/gf.c:2419
run_benchmark at /home/walter/Projects/ora_bench/lang/julia/OraBenchOracle.jl:501
main at /home/walter/Projects/ora_bench/lang/julia/OraBenchOracle.jl:456
unknown function (ip: 0x7f1a555fba7c)
_jl_invoke at /buildworker/worker/package_linux64/build/src/gf.c:2237 [inlined]
jl_apply_generic at /buildworker/worker/package_linux64/build/src/gf.c:2419
jl_apply at /buildworker/worker/package_linux64/build/src/julia.h:1703 [inlined]
do_call at /buildworker/worker/package_linux64/build/src/interpreter.c:115
eval_value at /buildworker/worker/package_linux64/build/src/interpreter.c:204
eval_stmt_value at /buildworker/worker/package_linux64/build/src/interpreter.c:155 [inlined]
eval_body at /buildworker/worker/package_linux64/build/src/interpreter.c:562
jl_interpret_toplevel_thunk at /buildworker/worker/package_linux64/build/src/interpreter.c:670
jl_toplevel_eval_flex at /buildworker/worker/package_linux64/build/src/toplevel.c:877
jl_eval_module_expr at /buildworker/worker/package_linux64/build/src/toplevel.c:195 [inlined]
jl_toplevel_eval_flex at /buildworker/worker/package_linux64/build/src/toplevel.c:668
jl_toplevel_eval_flex at /buildworker/worker/package_linux64/build/src/toplevel.c:825
jl_toplevel_eval_in at /buildworker/worker/package_linux64/build/src/toplevel.c:929
eval at ./boot.jl:360 [inlined]
include_string at ./loading.jl:1116
_jl_invoke at /buildworker/worker/package_linux64/build/src/gf.c:2237 [inlined]
jl_apply_generic at /buildworker/worker/package_linux64/build/src/gf.c:2419
_include at ./loading.jl:1170
include at ./Base.jl:386
_jl_invoke at /buildworker/worker/package_linux64/build/src/gf.c:2237 [inlined]
jl_apply_generic at /buildworker/worker/package_linux64/build/src/gf.c:2419
exec_options at ./client.jl:285
_start at ./client.jl:485
jfptr__start_34281 at /home/walter/.asdf/installs/julia/1.6.2/lib/julia/sys.so (unknown line)
_jl_invoke at /buildworker/worker/package_linux64/build/src/gf.c:2237 [inlined]
jl_apply_generic at /buildworker/worker/package_linux64/build/src/gf.c:2419
jl_apply at /buildworker/worker/package_linux64/build/src/julia.h:1703 [inlined]
true_main at /buildworker/worker/package_linux64/build/src/jlapi.c:560
repl_entrypoint at /buildworker/worker/package_linux64/build/src/jlapi.c:702
main at /buildworker/worker/package_linux64/build/cli/loader_exe.c:51
__libc_start_main at /lib/x86_64-linux-gnu/libc.so.6 (unknown line)
_start at /home/walter/.asdf/installs/julia/1.6.2/bin/julia (unknown line)
Allocations: 70437479 (Pool: 70399537; Big: 37942); GC: 68
./lang/julia/scripts/run_bench_oracle_jl.sh: line 59: 16299 Segmentation fault      (core dumped) julia lang/julia/OraBenchOracle.jl priv/properties/ora_bench_toml.properties
felipenoris commented 3 years ago

@walter-weinmann , I'll try to replicate this, but meanwhile you should try using a Session Pool as a workaround.