Skip to content

Instantly share code, notes, and snippets.

Avatar

Ivan sitano

View GitHub Profile
@sitano
sitano / ruby_fork_pgkill_test.rb
Last active Apr 29, 2022
ruby_fork_pgkill_test.rb
View ruby_fork_pgkill_test.rb
$stdin.sync = true;
$stdout.sync = true;
$a = true
def handle(id, sig)
puts id.to_s + " got " + sig.to_s + " at " + Process.pid.to_s
$a = false
end
@sitano
sitano / gist:b12f4710eb3445aa993ed7782b88a3b5
Last active Feb 25, 2022
X1 Carbon Linux suspend fixes
View gist:b12f4710eb3445aa993ed7782b88a3b5
$ cat /etc/systemd/logind.conf
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
#
# Entries in this file show the compile time defaults.
@sitano
sitano / fork_reaper.c
Created Nov 18, 2021
test reaping caps
View fork_reaper.c
#include <stdio.h>
#include <unistd.h>
#include <sys/prctl.h>
int main() {
printf("origin: pid=%d, ppid=%d, pgid=%d\n", getpid(), getppid(), getpgid(getpid()));
printf("prctl %d\n", prctl(PR_SET_CHILD_SUBREAPER, 1, 0, 0, 0));
pid_t pid = fork();
@sitano
sitano / setns.c
Last active Mar 15, 2022
test setns
View setns.c
#define _GNU_SOURCE /* See feature_test_macros(7) */
#include <sched.h>
#include <sys/syscall.h> /* Definition of SYS_* constants */
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <sys/wait.h>
#include <time.h>
@sitano
sitano / docker_pg_pgb.sh
Created Nov 4, 2021
Local docker postgres+pgbouncer
View docker_pg_pgb.sh
docker run --rm --name pg -e POSTGRES_PASSWORD=123 -e POSTGRES_HOST_AUTH_METHOD=md5 postgres:latest
docker run --rm -e DATABASE_URL="postgres://postgres:123@172.17.0.2/postgres" -e POOL_MODE=session -p 5432:5432 --name pgb -it edoburu/pgbouncer /usr/bin/pgbouncer /etc/pgbouncer/pgbouncer.ini -v
psql postgres://postgres:123@pgb/
# by default latest versions of PG use SASL+SCRAM-SHA-256 that is not support by the pgbouncer docker image
@sitano
sitano / mmap.c
Last active Oct 27, 2021
testing mmap
View mmap.c
#include <errno.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/mman.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
View ruby-allocator-count.py
#!/usr/bin/python
# to try this you'll need to edit in the name of your ruby binary and install bcc-tools
# bcc installation instructions are at https://github.com/iovisor/bcc/blob/master/INSTALL.md
from __future__ import print_function
from bcc import BPF
from time import sleep
import os
# load BPF program
@sitano
sitano / sig2.c
Created Oct 21, 2021
experimenting with cond signal and ruby scheduler
View sig2.c
#define _MULTI_THREADED
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <fcntl.h>
/* For safe condition variable usage, must use a boolean predicate and */
/* a mutex with the condition. */
@sitano
sitano / sig1.c
Created Oct 21, 2021
experimenting with cond signal
View sig1.c
#define _MULTI_THREADED
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
/* For safe condition variable usage, must use a boolean predicate and */
/* a mutex with the condition. */
int workToDo = 0;
pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
@sitano
sitano / ruby_uprobe_rb_io_puts.bt
Created Oct 18, 2021
Example of using BPFTRACE with UPROBES for picking puts calls in Ruby VM
View ruby_uprobe_rb_io_puts.bt
/**
*
* For a Ruby program:
*
* $ cat prog.rb
*
* Thread.new {
* while true
* puts "2222222222222222222222222222222222222222222222222222222222222222222222"
* sleep 0.2