CodeIntelligenceTesting / jazzer.js

Coverage-guided, in-process fuzzing for Node.js
https://code-intelligence.com
Apache License 2.0
282 stars 26 forks source link

Error when installing @jazzer.js/core on linux arm architectures #795

Open matthewkeil opened 6 months ago

matthewkeil commented 6 months ago

We using the @jazzer/core for one of our libs which is also a native module. Thanks making this module!!! We prebuild the binaries for a number of architectures and found an edge case in your build process.

Issue 1) We are attempting to prebuild our library for linux/arm64 which is not prebuilt by jasser.js/fuzzer so it attempts to build it locally. The issue is that prebuild is a devDependency.

@jazzer.js/fuzzer package.json

        "prebuild": "prebuild --runtime napi --backend cmake-js --all --strip --verbose",
        "install": "prebuild-install --runtime napi || npm run prebuild",

The installation falls back to the second case where npm run prebuild scripts runs and when it does it throws Error: prebuild not found. Likely this is because its a dev dependency. For the time being we have added prebuild as a global package in our docker container but when the build runs we came up with the second issue below.

Issue 2) Your CmakeLists.txt has a target that is not supported on linxu/arm64

set(LIBFUZZER_TARGET "clang_rt.fuzzer_no_main-x86_64")

Not sure how to handle this second part of things but wanted to also bring it to your attention.

Johann-S commented 5 months ago

The only solution I found was to save Jazzer deps as optional...

matthewkeil commented 5 months ago

The only solution I found was to save Jazzer deps as optional...

We use yarn and this approach caused us issues downstream because yarn pulls optional and there is no flag to ignore them like there is for peer deps. We ended up just running an exec in the fuzz test entrance file if it was not installed yet.

https://github.com/ChainSafe/blst-ts/blob/05be5dac3b2c296f3627e06f75623aaba4d1fa78/test/fuzz/fuzz.test.ts#L31