Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Julia crash (win 10 - MS ODBC 17 - ODBC v1.0.0) #292

Closed
haavardhvarnes opened this issue Jun 4, 2020 · 3 comments
Closed

Julia crash (win 10 - MS ODBC 17 - ODBC v1.0.0) #292

haavardhvarnes opened this issue Jun 4, 2020 · 3 comments

Comments

@haavardhvarnes
Copy link

An odd bug appeared after collecting all data and combining them into a data frame. Unfortunately it made whole of Julia crash so it might be some GC problem.

Last printout:
after last disconnect
after function where db data is collected ..
after slicing dataframe ..
...after market data

Please submit a bug report with steps to reproduce this fault, and any error messages that follow (in their entirety). Thanks.
Exception: EXCEPTION_ACCESS_VIOLATION at 0x7ffda4d0983b -- SQLAllocHandle at C:\WINDOWS\SYSTEM32\odbc32.DLL (unknown line)
in expression starting at C:\Users\hvarnhav\OneDrive - Fortum\Documents\DevRoot\jl\Heat\heatoslosim.jl:76
SQLAllocHandle at C:\WINDOWS\SYSTEM32\odbc32.DLL (unknown line)
SQLSetCursorName at C:\WINDOWS\SYSTEM32\odbc32.DLL (unknown line)
SQLDisconnect at C:\WINDOWS\SYSTEM32\odbc32.DLL (unknown line)
SQLFreeHandle at C:\Users\hvarnhav.julia\packages\ODBC\uLgtd\src\API.jl:87
#4 at C:\Users\hvarnhav.julia\packages\ODBC\uLgtd\src\API.jl:161
unknown function (ip: 0000000061D24B69)
jl_apply at /cygdrive/d/buildbot/worker/package_win64/build/src\julia.h:1692 [inlined]
run_finalizer at /cygdrive/d/buildbot/worker/package_win64/build/src\gc.c:277
jl_gc_run_finalizers_in_list at /cygdrive/d/buildbot/worker/package_win64/build/src\gc.c:363
run_finalizers at /cygdrive/d/buildbot/worker/package_win64/build/src\gc.c:391 [inlined]
run_finalizers at /cygdrive/d/buildbot/worker/package_win64/build/src\gc.c:370
jl_gc_enable_finalizers at /cygdrive/d/buildbot/worker/package_win64/build/src\gc.c:402
jl_mutex_unlock at /cygdrive/d/buildbot/worker/package_win64/build/src\locks.h:141 [inlined]
jl_compile_method_internal at /cygdrive/d/buildbot/worker/package_win64/build/src\gf.c:1911
jl_invoke at /cygdrive/d/buildbot/worker/package_win64/build/src\gf.c:2153 [inlined]
jl_apply_generic at /cygdrive/d/buildbot/worker/package_win64/build/src\gf.c:2322
jl_apply at /cygdrive/d/buildbot/worker/package_win64/build/src\julia.h:1692 [inlined]
do_call at /cygdrive/d/buildbot/worker/package_win64/build/src\interpreter.c:369
eval_value at /cygdrive/d/buildbot/worker/package_win64/build/src\interpreter.c:458
eval_stmt_value at /cygdrive/d/buildbot/worker/package_win64/build/src\interpreter.c:409 [inlined]
eval_body at /cygdrive/d/buildbot/worker/package_win64/build/src\interpreter.c:799
jl_interpret_toplevel_thunk at /cygdrive/d/buildbot/worker/package_win64/build/src\interpreter.c:911
jl_toplevel_eval_flex at /cygdrive/d/buildbot/worker/package_win64/build/src\toplevel.c:814
jl_parse_eval_all at /cygdrive/d/buildbot/worker/package_win64/build/src\ast.c:872
jl_load at /cygdrive/d/buildbot/worker/package_win64/build/src\toplevel.c:872 [inlined]
jl_load
at /cygdrive/d/buildbot/worker/package_win64/build/src\toplevel.c:879
include at .\client.jl:439
jl_apply at /cygdrive/d/buildbot/worker/package_win64/build/src\julia.h:1692 [inlined]
do_call at /cygdrive/d/buildbot/worker/package_win64/build/src\interpreter.c:369
eval_value at /cygdrive/d/buildbot/worker/package_win64/build/src\interpreter.c:458
eval_stmt_value at /cygdrive/d/buildbot/worker/package_win64/build/src\interpreter.c:409 [inlined]
eval_body at /cygdrive/d/buildbot/worker/package_win64/build/src\interpreter.c:799
jl_interpret_toplevel_thunk at /cygdrive/d/buildbot/worker/package_win64/build/src\interpreter.c:911
jl_toplevel_eval_flex at /cygdrive/d/buildbot/worker/package_win64/build/src\toplevel.c:814
jl_toplevel_eval at /cygdrive/d/buildbot/worker/package_win64/build/src\toplevel.c:823 [inlined]
jl_toplevel_eval_in at /cygdrive/d/buildbot/worker/package_win64/build/src\toplevel.c:843
eval at .\boot.jl:331 [inlined]
repleval at C:\Users\hvarnhav.julia\packages\Atom\LBufP\src\repl.jl:196
#246 at C:\Users\hvarnhav.julia\packages\Atom\LBufP\src\repl.jl:223
with_logstate at .\logging.jl:398
with_logger at .\logging.jl:505 [inlined]
evalrepl at C:\Users\hvarnhav.julia\packages\Atom\LBufP\src\repl.jl:214
jl_apply at /cygdrive/d/buildbot/worker/package_win64/build/src\julia.h:1692 [inlined]
do_call at /cygdrive/d/buildbot/worker/package_win64/build/src\interpreter.c:369
eval_value at /cygdrive/d/buildbot/worker/package_win64/build/src\interpreter.c:458
eval_stmt_value at /cygdrive/d/buildbot/worker/package_win64/build/src\interpreter.c:409 [inlined]
eval_body at /cygdrive/d/buildbot/worker/package_win64/build/src\interpreter.c:799
jl_interpret_toplevel_thunk at /cygdrive/d/buildbot/worker/package_win64/build/src\interpreter.c:911
jl_toplevel_eval_flex at /cygdrive/d/buildbot/worker/package_win64/build/src\toplevel.c:814
jl_toplevel_eval at /cygdrive/d/buildbot/worker/package_win64/build/src\toplevel.c:823 [inlined]
jl_toplevel_eval_in at /cygdrive/d/buildbot/worker/package_win64/build/src\toplevel.c:843
eval at .\boot.jl:331
eval_user_input at D:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.4\REPL\src\REPL.jl:86
macro expansion at D:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.4\REPL\src\REPL.jl:118 [inlined]
#26 at .\task.jl:358
jl_apply at /cygdrive/d/buildbot/worker/package_win64/build/src\julia.h:1692 [inlined]
start_task at /cygdrive/d/buildbot/worker/package_win64/build/src\task.c:687
Allocations: 194939760 (Pool: 194901748; Big: 38012); GC: 138

Julia has exited.
Press Enter to start a new session.

@haavardhvarnes
Copy link
Author

haavardhvarnes commented Jun 5, 2020

Btw, same error with "ODBC Driver 13 for SQL Server".

Possible related issues are:
JuliaDatabases/MySQL.jl#44
JuliaData/MemPool.jl#26
felipenoris/XLSX.jl#111

@quinnj
Copy link
Member

quinnj commented Jun 5, 2020

Not sure if it will help, but can you try #295 to see if it makes a difference? The ODBC docs mention needing to disconnect before freeing, but it seems like it'd be silly if that led to a segfault. I'll try to dust off a windows machine to test this some more later.

quinnj added a commit that referenced this issue Jun 6, 2020
Fixes #292. This was a bit of a bear to track down, mainly
because the docs for SQLDisconnect state explicitly that all statements
on the connection will be closed/freed when disconnecting. For whatever reason, that doesn't seem to be the case on windows, because when we keep a `WeakKeyDict` of statement handles and finalize them all before closing the connection, we no longer have issues. ¯\_(ツ)_/¯
@quinnj
Copy link
Member

quinnj commented Jun 6, 2020

Ok, I think I tracked down the issue here, PR with a fix is up: #296

@quinnj quinnj closed this as completed in 093d0b4 Jun 6, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants