You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Describe the bug
The IR benchmark for DecoderMux proc is prone to a random failure after increasing pipeline_stages parameter for the benchmark from 2 up to 10. The error is indicated by the following output:
This failure does not occur for every benchmark run. It might be required to run the benchmark multiple times (could even take 50 runs) to reproduce the error.
To Reproduce
Steps to reproduce the behavior:
Checkout on current main branch (cd90112 at the time of writing this issue)
Modify pipeline_stages parameter for DecoderMux codegen and IR benchmark:
Run bazel run -c opt -- //xls/modules/zstd:dec_mux_opt_ir_benchmark repeatedly up to the segfault occurrence, e.g.:
count=0; while bazel run -c opt -s -- //xls/modules/zstd:dec_mux_opt_ir_benchmark --logtostderr; do (( count++ )); echo "Run $count"; done; echo "successfull runs: $count"
Observe segfault of the benchmark_main
Expected behavior benchmark_main should fail gracefully or not at all
Additional context
I noticed that proc DecoderMux can be divided by the toolchain into more than 2 pipeline stages as it is currently on the main branch. I increased this parameter for the IR benchmark to 10 to see the number of stages that have some IR nodes assigned to those (happens to be 3 pipeline stages). Then I set the pipeline stages for the codegen rule to 3 stages indicated by the benchmark. Then I noticed that sometimes the IR benchmark would fail.
I was able to reproduce this with enough runs. Unfortunately, it looks like controlling the seed doesn't actually make this deterministic. The crash does not happen consistently, even with the same seed! Building with either ASAN or MSAN doesn't fix this either.
This seems likely to be some subtler issue with the JIT.
Describe the bug
The IR benchmark for DecoderMux proc is prone to a random failure after increasing pipeline_stages parameter for the benchmark from
2
up to10
. The error is indicated by the following output:This failure does not occur for every benchmark run. It might be required to run the benchmark multiple times (could even take 50 runs) to reproduce the error.
To Reproduce
Steps to reproduce the behavior:
main
branch (cd90112 at the time of writing this issue)pipeline_stages
parameter forDecoderMux
codegen and IR benchmark:bazel run -c opt -- //xls/modules/zstd:dec_mux_opt_ir_benchmark
repeatedly up to the segfault occurrence, e.g.:benchmark_main
Expected behavior
benchmark_main
should fail gracefully or not at allAdditional context
I noticed that proc
DecoderMux
can be divided by the toolchain into more than 2 pipeline stages as it is currently on themain
branch. I increased this parameter for the IR benchmark to 10 to see the number of stages that have some IR nodes assigned to those (happens to be 3 pipeline stages). Then I set the pipeline stages for the codegen rule to 3 stages indicated by the benchmark. Then I noticed that sometimes the IR benchmark would fail.The segfault seems to be happening somewhere in the evaluation of the Block IR with JIT.
This was also happening in the CI for the #1616: https://github.com/google/xls/actions/runs/11494086318/job/32320996820?pr=1616#step:10:463
CC @proppy
The text was updated successfully, but these errors were encountered: