Skip to content

Update drmemory.yml (external logs version) #37

Update drmemory.yml (external logs version)

Update drmemory.yml (external logs version) #37

Workflow file for this run

name: Run Dr. Memory
on:
push:
jobs:
run-drmemory:
name: '${{ matrix.os }}'
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-22.04]
steps:
- name: Check out repository
uses: actions/checkout@v4
with:
ref: 90eb2d32c0fe226f693172d2c1d2e364fb99a55e
- name: Install dependencies for project (Linux)
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install -y lib32readline-dev lib32readline8 lib32ncurses-dev lib32ncurses6
- name: Build repository
run: |
export CC=gcc && export CXX=g++ && export CFLAGS="-g -fno-inline -fno-omit-frame-pointer" && export LDFLAGS=""
sed -i 's/^CC\s*=.*/CC = gcc/' Makefile && sed -i 's/^CXX\s*=.*/CXX = g++/' Makefile && sed -i 's/^CFLAGS\s*=.*/& -g -fno-inline -fno-omit-frame-pointer/' Makefile && sed -i 's/^LDFLAGS\s*=.*/& /' Makefile && sed -i 's/^CPP\s*=.*/CPP = gcc -E/' Makefile
make
continue-on-error: true
- name: Install Dr. Memory
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install -y libunwind8
wget -P /tmp/ https://github.com/DynamoRIO/drmemory/releases/download/release_2.6.0/DrMemory-Linux-2.6.0.tar.gz && tar -xzf /tmp/DrMemory-Linux-2.6.0.tar.gz -C /tmp/ && echo "/tmp/DrMemory-Linux-2.6.0/bin" >> $GITHUB_PATH
- name: Disable Address Space Randomization
if: runner.os == 'Linux'
run: sudo sysctl -w kernel.randomize_va_space=0
- name: Disable swapping
if: runner.os == 'Linux'
run: sudo swapoff -a
- name: Run Dr. Memory
run: |
#!/bin/bash
mkdir -p drmem_logs
set +e
echo "=========[Dr Memory Service Started!]========="
DIRECTORY=.
is_executable() {
local file="$1"
if file "$file" | grep -q 'ELF 64-bit'; then
return 0
else
return 1
fi
}
run_with_drmemory() {
local executable="$1"
local log_dir="./logs"
timeout 30s drmemory -logdir "./drmem_logs" -- "$executable"
local exit_status=$?
}
find "$DIRECTORY" -type f -executable | while read -r file; do
if is_executable "$file"; then
run_with_drmemory "$file"
echo ""
echo ""
echo ""
fi
done
echo "=========[Dr. Memory service finished]========="
- name: Upload Dr. Memory reports
uses: actions/upload-artifact@v4
with:
name: drmemory-report-${{ github.event.repository.name }}-on-${{ matrix.os }}-from_branch_${{ github.ref_name }}
path: './drmem_logs/*'