You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I've been trying to narrow down the cause of some production crashes for a while:
#
# Fatal error in ../deps/v8/src/api.h, line 297
# CHECK(allow_empty_handle || that != __null) failed
#
I finally got a backtrace:
#00x000000000095cbae in v8::internal::OS::Abort() ()
#10x000000000072490e in V8_Fatal ()
#20x00000000006f62b3 in v8::Object::Set(v8::Handle<v8::Value>, v8::Handle<v8::Value>, v8::PropertyAttribute) ()
#30x00007fabe2f6cc6a in ODBCResult::UV_AfterFetchAll (work_req=0x7fabd91f7c00, status=<optimized out>) at ../src/odbc_result.cpp:544
#40x00000000009c40d1 in uv__work_done ()
#50x00000000009ba249 in ?? ()
#60x00000000009ba313 in ?? ()
#70x00000000009c6f1c in uv__io_poll ()
#80x00000000009babac in uv_run ()
#90x00000000009692c2 in node::Start(int, char**) ()
#100x00007fabe3192eed in __libc_start_main () from /lib/x86_64-linux-gnu/libc.so.6
#110x00000000005c0c21 in _start ()
From the looks of it GetRecordTuple() is returning an empty handle. Presumably this is because GetColumnValue() returned an empty handle due to calling ThrowException. Unfortunately ThrowException is probably a bad thing to do here. Even if UV_AfterFetchAll handled this case, it will result in an exception being thrown when control returns to JavaScript, rather than passed as the err parameter of the callback.
I'm working on a patch for this which will involve properly passing exceptions all the way through to the callback, but it will be for my master branch.
The text was updated successfully, but these errors were encountered:
I've been trying to narrow down the cause of some production crashes for a while:
# # Fatal error in ../deps/v8/src/api.h, line 297 # CHECK(allow_empty_handle || that != __null) failed #
I finally got a backtrace:
This line 544 actually refers to the master branch in my repository: https://github.com/lee-houghton/node-odbc/blob/master/src/odbc_result.cpp#L544
From the looks of it
GetRecordTuple()
is returning an empty handle. Presumably this is becauseGetColumnValue()
returned an empty handle due to callingThrowException
. UnfortunatelyThrowException
is probably a bad thing to do here. Even ifUV_AfterFetchAll
handled this case, it will result in an exception being thrown when control returns to JavaScript, rather than passed as theerr
parameter of the callback.I'm working on a patch for this which will involve properly passing exceptions all the way through to the callback, but it will be for my master branch.
The text was updated successfully, but these errors were encountered: