firebase-admin-node: Segmentation fault / std::bad_alloc on node version >= v12
[REQUIRED] Step 2: Describe your environment
- Operating System version: Ubuntu 20.04, Debian Buster, OSX 10.15.6, Alpine 3.12.0
- Firebase SDK version: 9.2.0
- Firebase Product: database
- Node.js version: v12.18.3
- NPM version: 6.14.6
[REQUIRED] Step 3: Describe the problem
We have a pretty basic js-script to update a property in firebase (see below). This script works fine on node v10 and v11 but has a segmentation fault (std::bad_alloc) when run on node v12 or higher
Steps to reproduce:
Switch node version and run script:
$ nvm use v10
Now using node v10.22.1 (npm v6.14.6)
$ time node fire.js
OK
node fire.js 0,30s user 0,04s system 26% cpu 1,249 total
$ nvm use v12
Now using node v12.18.3 (npm v6.14.6)
$ time node ./fire.js
terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc
[2] 3460141 abort (core dumped) node ./fire.js
node ./fire.js 0,28s user 0,03s system 0% cpu 1:01,63 total
(note the 28 second duration)
$ nvm use v14
Now using node v14.12.0 (npm v6.14.8)
$ time node fire.js
terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc
[2] 3456469 abort (core dumped) node fire.js
node fire.js 0,25s user 0,02s system 26% cpu 1,039 total
Relevant Code:
const admin = require('firebase-admin');
const FIREBASE_AUTH_DOMAIN = '';
const FIREBASE_DATABASE_URL = '';
const FIREBASE_CLIENT_EMAIL = '';
const FIREBASE_PRIVATE_KEY = ''
const credential = admin.credential.cert({
projectId: FIREBASE_AUTH_DOMAIN,
clientEmail: FIREBASE_CLIENT_EMAIL,
privateKey: FIREBASE_PRIVATE_KEY,
});
const app = admin.initializeApp(
{
credential,
databaseURL: FIREBASE_DATABASE_URL,
},
FIREBASE_AUTH_DOMAIN,
);
const firebaseScreenData = {
'some-prop': 'some-value',
};
const firebaseClient = app;
const database = firebaseClient.database();
const main = async () => {
try {
await database.ref('temp-db').set(firebaseScreenData);
await firebaseClient.delete();
} catch (e) {
console.log('Error', e);
throw e;
}
console.log('OK');
};
main();
Node versions tested:
Version | Works |
---|---|
v8.11.4 | ✅ |
v10.22.1 | ✅ |
v11.15.0 | ✅ |
v12.18.3 | ❌ |
v13.14.0 | ❌ |
v14.12.0 | ❌ |
About this issue
- Original URL
- State: closed
- Created 4 years ago
- Reactions: 12
- Comments: 22 (6 by maintainers)
Same issue.
Running Firebase Admin on NodeJS > 11.15.0 cause “std::bad_alloc” or “Segmentation fault”
Node version : 14.6.0 Firebase Admin version : 9.4.2
Everything works well with Node v11.15.0 and firebase-admin@9.4.2
Getting the same on a simple read with a query
Having the same issue too with fireadmin v10 and nodes (v12,v14,v16,v17). [donwngrading to node v11.15 & fireadmin v9.4.2 is working workaround for now.]
crash logs:
PID 26541 received SIGSEGV for address: 0x0 0 segfault-handler.node 0x0000000108f8e0ba _ZL16segfault_handleriP9__siginfoPv + 298 1 libsystem_platform.dylib 0x00007ff81b436e2d _sigtramp + 29 2 node 0x00000001047959e0 _ZN2v88internal6Object15AddDataPropertyEPNS0_14LookupIteratorENS0_6HandleIS1_EENS0_18PropertyAttributesENS_5MaybeINS0_11ShouldThrowEEENS0_11StoreOriginE + 976 3 node.napi.node 0x0000000108fa4436 _ZN14Secp256k1Addon4InitEN4Napi3EnvE + 1826 4 node.napi.node 0x0000000108fa352d _Z4InitN4Napi3EnvENS_6ObjectE + 18 5 node.napi.node 0x0000000108fa3601 _Z11__napi_InitP10napi_env__P12napi_value__ + 109 6 node 0x00000001041c6956 _Z30napi_module_register_by_symbolN2v85LocalINS_6ObjectEEENS0_INS_5ValueEEENS0_INS_7ContextEEEPFP12napi_value__P10napi_env__S8_E + 838 7 node 0x00000001041cbad7 _ZNSt3__110__function6__funcIZN4node7binding6DLOpenERKN2v820FunctionCallbackInfoINS4_5ValueEEEE3$_0NS_9allocatorISA_EEFbPNS3_4DLibEEEclEOSE_ + 327 8 node 0x00000001041ca6e0 _ZN4node11Environment12TryLoadAddonEPKciRKNSt3__18functionIFbPNS_7binding4DLibEEEE + 320 9 node 0x00000001041ca4bb _ZN4node7binding6DLOpenERKN2v820FunctionCallbackInfoINS1_5ValueEEE + 587 10 node 0x00000001043e1dd9 _ZN2v88internal25FunctionCallbackArguments4CallENS0_15CallHandlerInfoE + 265 11 node 0x00000001043e18a6 _ZN2v88internal12_GLOBAL__N_119HandleApiCallHelperILb0EEENS0_11MaybeHandleINS0_6ObjectEEEPNS0_7IsolateENS0_6HandleINS0_10HeapObjectEEESA_NS8_INS0_20FunctionTemplateInfoEEENS8_IS4_EENS0_16BuiltinArgumentsE + 550 12 node 0x00000001043e101f _ZN2v88internal21Builtin_HandleApiCallEiPmPNS0_7IsolateE + 255 13 node 0x0000000104c51eb9 Builtins_CEntry_Return1_DontSaveFPRegs_ArgvOnStack_BuiltinExit + 57