Skip to content

Instantly share code, notes, and snippets.

View mmarchini's full-sized avatar
🛑
taking a break

mary marchini mmarchini

🛑
taking a break
View GitHub Profile
$ make LDFLAGS=-static NO_PERF_READ_VDSO32=1 NO_PERF_READ_VDSOX32=1 NO_JVMTI=1
BUILD: Doing 'make -j8' parallel build
HOSTCC fixdep.o
HOSTLD fixdep-in.o
LINK fixdep
Auto-detecting system features:
... dwarf: [ on ]
... dwarf_getlocations: [ on ]
... glibc: [ on ]
@mmarchini
mmarchini / v10-json-parse-size-load-constants.bt
Last active November 3, 2019 05:32
Node.js v10 -> v12 bpftrace programs
// Node v10.15.3
uprobe:/home/mmarchini/.nvm/versions/node/v10.15.3/bin/node:_ZN2v88internal17Builtin_JsonParseEiPPNS0_6ObjectEPNS0_7IsolateE
{
// Load constants
$kPointerSize = (uint32)(1 << (*uaddr("v8dbg_PointerSizeLog2")));
$stringLengthOffset = (uint32)*uaddr("v8dbg_class_String__length__SMI");
$kTag = (uint32)*uaddr("v8dbg_HeapObjectTag");
$kTagMask = (uint32)*uaddr("v8dbg_SmiTagMask");
$kShiftSize = (uint32)*uaddr("v8dbg_SmiShiftSize");
@mmarchini
mmarchini / build.sh
Created November 27, 2019 18:33
Building libc6 with frame pointers
# Uncomment deb-src lines on /etc/apt/sources.list
sudo apt-get update
# Or replace ~/glibc with preferred path to store libc source
mkdir -p ~/glibc
cd ~/glibc
sudo apt-get install -y dpkg-dev
sudo apt-get build-deps libc6
apt-get source libc6
new Promise
console.log
@mmarchini
mmarchini / promise-rejections.js
Created August 10, 2020 21:53
promise-rejections.js
Promise.reject(new Error()); // This will result in a rejection
new Promise((fulfill, reject) => {
reject(new Error()); // This will result in a rejection
});
new Promise(() => {
throw new Error(); // This will result in a rejection
});
@mmarchini
mmarchini / callback-readFile.js
Created August 10, 2020 21:53
callback-readFile.js
// Callback version
const { readFile } = require('fs');
function readJsonFile(file, cb) {
readFile(file, (err, data) => {
if (err) {
// If error while reading file, propagate the error via callback
return cb(err, null);
}
// Unexpected invalid JSON input, code will throw
@mmarchini
mmarchini / async-readFile.js
Created August 10, 2020 21:54
async-readFile.js
// async function version
const { readFile } = require('fs').promises;
async function readJsonFile(file) {
// Promise is rejected if fails to read or if unexpected JSON input.
return JSON.parse(await readFile(file));
}
@mmarchini
mmarchini / unhandled-rejections.js
Created August 10, 2020 21:54
unhandled-rejections.js
async function foo() {
throw new Error();
}
foo() // 1. Unhandled at this point
.catch(() => console.error("an error occured")); // 2. Now it's handled
try {
await foo();
} catch(e) { // 3. Handled
@mmarchini
mmarchini / resource-leak.js
Created August 10, 2020 21:55
resource-leak.js
const http = require('http');
const server = http.createServer(handle);
server.listen(3000);
function handle (req, res) {
doStuff()
.then((body) => {
res.end(body);
});
@mmarchini
mmarchini / resource-leak-mitigation.js
Created August 10, 2020 21:55
resource-leak-mitigation.js
const http = require('http');
const server = http.createServer(handle);
server.listen(3000);
process.on('unhandledRejection', (err) => {
throw err;
});
function handle (req, res) {