Skip to content

Fix Use After Free Crash #378

Fix Use After Free Crash

Fix Use After Free Crash #378

Workflow file for this run

name: Build Extension
on:
push:
branches: [ '*' ]
tags: [ '*' ]
pull_request:
types: [ opened, reopened, ready_for_review ]
jobs:
build_ext:
name: Build for ${{ matrix.os }} SM ${{ matrix.sm }}
runs-on: ${{ matrix.os_version }}
container:
image: ${{ matrix.container_image }}
strategy:
fail-fast: false
matrix:
os: [windows, linux]
sm: [stable, dev]
include:
- meta_branch: "1.12-dev"
sdks_to_fetch: 'tf2 dods css bms sdk2013 orangebox hl2dm episode1 l4d l4d2 csgo swarm'
- os: windows
os_version: windows-latest
ambuild_target: 'x86,x86_64'
libsym_ext: 'dll'
dbgsym_ext: 'pdb'
build_sdks: 'tf2,dods,css,bms,sdk2013,orangebox,hl2dm,episode1,l4d,l4d2,csgo,swarm'
os_ambuild_params: ''
- os: linux
os_version: ubuntu-latest
ambuild_target: 'x86,x86_64'
libsym_ext: 'so'
dbgsym_ext: 'dbg'
build_sdks: 'tf2,dods,css,bms,sdk2013,orangebox,hl2dm,episode1,l4d,l4d2,csgo'
os_ambuild_params: ''
container_image: ghcr.io/alliedmodders/build-containers/debian11-clang22:latest
- sm: stable
sm_branch: "1.12-dev"
- sm: dev
sm_branch: "master"
env:
BREAKPAD_SYMBOL_SERVER: "http://crash.limetech.org/symbols/submit"
steps:
# Largely a workaround for issue where github.workspace doesn't match $GITHUB_WORKSPACE
# in containerized jobs. See https://github.com/actions/runner/issues/2058
- name: Resolve paths
id: path_helper
shell: bash
run: |
echo "dependencies=$GITHUB_WORKSPACE/dependencies" >> $GITHUB_OUTPUT
echo "userbins=$GITHUB_WORKSPACE/userbins" >> $GITHUB_OUTPUT
echo "basedir=$GITHUB_WORKSPACE" >> $GITHUB_OUTPUT
- name: Setup Python
if: runner.os == 'Windows'
uses: actions/setup-python@v6.2.0
with:
python-version: '3.12'
- name: Setup AMBuild
if: runner.os == 'Windows'
run: |
python -m pip install --upgrade pip setuptools wheel
pip install git+https://github.com/alliedmodders/ambuild
- name: Install Breakpad dump_syms (Windows)
if: runner.os == 'Windows'
run: |
mkdir -p ${{ steps.path_helper.outputs.userbins }}
cd ${{ steps.path_helper.outputs.userbins }}
Invoke-WebRequest -Uri 'https://github.com/mozilla/dump_syms/releases/download/v2.3.7/dump_syms-x86_64-pc-windows-msvc.zip' -OutFile 'dump_syms-x86_64-pc-windows-msvc.zip'
7z x dump_syms-x86_64-pc-windows-msvc.zip
ls
- name: Update Path
shell: bash
run: |
echo "${{ steps.path_helper.outputs.userbins }}" >> "$GITHUB_PATH"
- name: Fetch Metamod:Source ${{ matrix.meta_branch }}
uses: actions/checkout@v6.0.2
with:
repository: alliedmodders/metamod-source
ref: ${{ matrix.meta_branch }}
path: mmsource
submodules: recursive
- name: Fetch SourceMod ${{ matrix.sm_branch }}
uses: actions/checkout@v6.0.2
with:
repository: alliedmodders/sourcemod
ref: ${{ matrix.sm_branch }}
path: sourcemod
submodules: recursive
- name: Fetch SDKs
shell: bash
run: |
mkdir -p '${{ steps.path_helper.outputs.dependencies }}'
cd '${{ steps.path_helper.outputs.dependencies }}'
git clone --mirror https://github.com/alliedmodders/hl2sdk hl2sdk-proxy-repo
sdks=(${{ matrix.sdks_to_fetch }})
for sdk in "${sdks[@]}"
do
git clone hl2sdk-proxy-repo -b $sdk hl2sdk-$sdk
done
ls -lah
- name: Fetch Extension
uses: actions/checkout@v6.0.2
with:
path: navbot
submodules: recursive
- name: Build Extension For ${{ matrix.ambuild_target }}
working-directory: navbot
shell: bash
run: |
mkdir build
cd build
python3 ../configure.py \
--sdks=${{ matrix.build_sdks }} \
--hl2sdk-root="${{ steps.path_helper.outputs.dependencies }}" \
--sm-path="${{ steps.path_helper.outputs.basedir }}/sourcemod" \
--mms-path="${{ steps.path_helper.outputs.basedir }}/mmsource" \
--enable-optimize \
--targets "${{ matrix.ambuild_target }}" \
--symbol-files ${{ matrix.os_ambuild_params }}
ambuild
- name: Get commit SHA
uses: benjlevesque/short-sha@v4.0
id: short-sha
- name: Name Package
id: pkgname
shell: bash
run: |
echo "name=navbot-${{ matrix.os }}-sm-${{ matrix.sm }}-${{ steps.short-sha.outputs.sha }}" >> $GITHUB_OUTPUT
echo "symbols=navbot-symbols-${{ matrix.os }}-sm-${{ matrix.sm }}-${{ steps.short-sha.outputs.sha }}" >> $GITHUB_OUTPUT
- name: Upload Extension as Artifact
uses: actions/upload-artifact@v7.0.1
with:
name: ${{ steps.pkgname.outputs.name }}
path: |
navbot/build/package/*
- name: Upload Debugging Symbols Artifact
uses: actions/upload-artifact@v7.0.1
with:
name: ${{ steps.pkgname.outputs.symbols }}
path: |
navbot/build/**/*.${{ matrix.dbgsym_ext }}
# TO-DO: Update this
do_release:
name: Create GH Release
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/')
needs: [ build_ext ]
steps:
- name: Create Folders
run: |
mkdir -p ${{ github.workspace }}/upload/
mkdir -p ${{ github.workspace }}/download/windows/stable/
mkdir -p ${{ github.workspace }}/download/windows/dev/
mkdir -p ${{ github.workspace }}/download/linux/stable/
mkdir -p ${{ github.workspace }}/download/linux/dev/
mkdir -p ${{ github.workspace }}/download/symbols/files/
- name: Download Artifacts (Windows - Stable)
uses: actions/download-artifact@v8.0.1
with:
pattern: 'navbot-windows-sm-stable*'
merge-multiple: true
path: ${{ github.workspace }}/download/windows/stable
- name: Download Artifacts (Windows - Dev)
uses: actions/download-artifact@v8.0.1
with:
pattern: 'navbot-windows-sm-dev*'
merge-multiple: true
path: ${{ github.workspace }}/download/windows/dev
- name: Download Artifacts (Linux - Stable)
uses: actions/download-artifact@v8.0.1
with:
pattern: 'navbot-linux-sm-stable*'
merge-multiple: true
path: ${{ github.workspace }}/download/linux/stable
- name: Download Artifacts (Linux - Dev)
uses: actions/download-artifact@v8.0.1
with:
pattern: 'navbot-linux-sm-dev*'
merge-multiple: true
path: ${{ github.workspace }}/download/linux/dev
- name: Download Debugging Symbols
uses: actions/download-artifact@v8.0.1
with:
pattern: 'navbot-symbols*'
merge-multiple: false
path: ${{ github.workspace }}/download/symbols/files/
- name: Create Package
run: |
cd ${{ github.workspace }}/download/windows/stable/
7z a -r "navbot-windows-sm-stable-${{ github.ref_name }}.7z" addons
mv *.7z ${{ github.workspace }}/upload/
cd ${{ github.workspace }}/download/windows/dev/
7z a -r "navbot-windows-sm-dev-${{ github.ref_name }}.7z" addons
mv *.7z ${{ github.workspace }}/upload/
cd ${{ github.workspace }}/download/linux/stable/
tar -czf "navbot-linux-sm-stable-${{ github.ref_name }}.tar.gz" --owner=0 --group=0 addons
mv *.tar.gz ${{ github.workspace }}/upload/
cd ${{ github.workspace }}/download/linux/dev/
tar -czf "navbot-linux-sm-dev-${{ github.ref_name }}.tar.gz" --owner=0 --group=0 addons
mv *.tar.gz ${{ github.workspace }}/upload/
cd ${{ github.workspace }}/download/symbols/
7z a -r "navbot-debug-symbols-${{ github.ref_name }}.7z" files
mv *.7z ${{ github.workspace }}/upload/
cd ${{ github.workspace }}/upload/
ls -lah
- name: Create Pre-release
uses: softprops/action-gh-release@v3.0.0
if: contains(github.ref_name, 'pr') == true
with:
name: "NavBot ${{ github.ref_name }}"
generate_release_notes: true
prerelease: true
files: |
upload/*.7z
upload/*.tar.gz
- name: Create Release
uses: softprops/action-gh-release@v3.0.0
if: contains(github.ref_name, 'pr') == false
with:
name: "NavBot ${{ github.ref_name }}"
generate_release_notes: true
prerelease: false
files: |
upload/*.7z
upload/*.tar.gz