Skip to content

Conversation

@grgalex
Copy link

@grgalex grgalex commented Sep 25, 2025

Fix a Segmentation Fault caused when calling openDbi on a non-open environment:

Reproducer:

var lmdb = require('./index.js')
var env = new lmdb.Env();
var dbi = env.openDbi({name: "myPrettyDatabase", create: true})

GDB backtrace:

Thread 1 "node_g" received signal SIGSEGV, Segmentation fault.
0x00007fddcc1cfbe2 in mdb_txn_renew0 (txn=0x0) at ../dependencies/lmdb/libraries/liblmdb/mdb.c:2996
2996            MDB_env *env = txn->mt_env;
(gdb) bt
#0  0x00007fddcc1cfbe2 in mdb_txn_renew0 (txn=0x0) at ../dependencies/lmdb/libraries/liblmdb/mdb.c:2996
#1  0x00007fddcc1d05e4 in mdb_txn_begin (env=0x55e9f940f590, parent=0x0, flags=0, ret=0x7fff680575d0) at ../dependencies/lmdb/libraries/liblmdb/mdb.c:3244
#2  0x00007fddcc1f4b81 in DbiWrap::ctor (info=...) at ../src/dbi.cpp:127
#3  0x00007fddcc1e254d in Nan::imp::FunctionCallbackWrapper (info=...) at ../../nan/nan_callbacks_12_inl.h:177

Behavior after fix:

node test.js                            
/tmp/node-lmdb/test.js:3
var dbi = env.openDbi({name: "myPrettyDatabase", create: true}) 
              ^ 
                                                                               
Error: The environment is not open.   

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

Successfully merging this pull request may close these issues.

1 participant