0xEigenLabs / eigen-prover

Eigen zkVM's Proving Service
33 stars 9 forks source link

Examples of cross-contract calls prove generation failure #104

Open BC-A opened 5 months ago

BC-A commented 5 months ago

I wrote an example of a cross-contract call. The generated json is contractCall.json. It can generate 10 chunks. However, when calling zkvm to generate a proof, the proof generation for the 7th chunk fails. In hardhat-example, you can find the relevant contract. After deploying the contract, call the get function in Bank. contractCall.json is generated for this transaction.

If you want to reproduce the problem, you can test it in the eigen-zkvm repo and replace solidityExample.json with contractCall.json, and execute the following code

RUST_MIN_STACK=2073741821 RUST_LOG=info cargo test --release test_zkvm_prove-- --nocapture

If you want to get error information faster, you can modify the test_file in the test_zkvm_lr_execute_then_prove function and change the task to evm. When iterating chunks, only generate proof for the 7th chunk(i==6 because i starts from 0), similar to the following

#[test]
#[ignore]
fn test_zkvm_lr_execute_then_prove() {
    env_logger::try_init().unwrap_or_default();
    let test_file = "/tmp/contractCall.json";
    let suite_json = fs::read_to_string(test_file).unwrap();

    let output_path = "/tmp/test_evm";
    let task = "evm";
    let workspace = format!("program/{}", task);
    let bootloader_inputs =
        zkvm_generate_chunks(workspace.as_str(), &suite_json, output_path).unwrap();
    let cnt_chunks: usize = bootloader_inputs.len();
    log::debug!("Generated {} chunks", cnt_chunks);
    // save the chunks
    let bi_files: Vec<_> = (0..bootloader_inputs.len())
        .map(|i| Path::new(output_path).join(format!("{task}_chunks_{i}.data")))
        .collect();
    log::debug!("bi_files: {:#?}", bi_files);
    bootloader_inputs
        .iter()
        .zip(&bi_files)
        .for_each(|(data, filename)| {
            let mut f = fs::File::create(filename).unwrap();
            for d in &data.0 {
                f.write_all(&d.to_bytes_le()[0..8]).unwrap();
            }
        });

    let cnt_chunks: usize = bootloader_inputs.len();
    log::debug!("Generated {} chunks", cnt_chunks);
    // load each chunk, generate witness and prove
    bi_files.iter().enumerate().for_each(|(i, filename)| {
        if i==6 {
            log::info!("i: {:?}, filename: {:#?}", i, filename);
            let mut f = fs::File::open(filename).unwrap();
            let metadata = fs::metadata(filename).unwrap();
            let file_size = metadata.len() as usize;
            assert!(file_size % 8 == 0);
            let mut buffer = vec![0; file_size];
            f.read_exact(&mut buffer).unwrap();
            let mut bi = vec![GoldilocksField::zero(); file_size / 8];
            bi.iter_mut().zip(buffer.chunks(8)).for_each(|(out, bin)| {
                *out = GoldilocksField::from_bytes_le(bin);
            });
            zkvm_prove_only(task, &suite_json, bi, i, output_path).unwrap();
        }
    });
}

Execute the following command to test

RUST_MIN_STACK=2073741821 RUST_LOG=info cargo test --release test_zkvm_lr_execute_then_prove -- --nocapture
BC-A commented 5 months ago

This is an error message

[2024-04-20T07:53:49Z DEBUG powdr_executor::witgen::machines::machine_extractor] Detected machine: block [2024-04-20T07:53:49Z INFO powdr_executor::witgen::vm_processor] Running main machine for 1048576 rows [00:03:16 (ETA: 00:00:19)] ██████████████████░░ 90% - 5516 rows/s, 554k identities/s, 73% progress [2024-04-20T07:57:05Z ERROR powdr_executor::witgen::vm_processor] Error: Row 945254 failed. Set RUST_LOG=debug for more information.

[2024-04-20T07:57:05Z DEBUG powdr_executor::witgen::vm_processor] Some identities where not satisfiable after the following values were uniquely determined (known nonzero first, then zero, unknown omitted): [2024-04-20T07:57:05Z DEBUG powdr_executor::witgen::vm_processor] Current row (945254): main._operation_id = 2 main.pc = 375738 main.Y = 3587217190 main.Z = 2309867857 main.tmp2 = 3 main.tmp3 = 3439329280 main.x1 = 281252400 main.x2 = 45440 main.x5 = 2768571416 main.x6 = 579533747 main.x7 = 4056654378 main.x8 = 957698780 main.x9 = 3259360503 main.reg_write_X_x10 = 1 main.x10 = 3587217190 main.x11 = 2309867857 main.x12 = 3661688610 main.x13 = 1206001142 main.x14 = 588167090 main.x15 = 118882634 main.x16 = 1788731658 main.x17 = 557474404 main.x18 = 3355586798 main.x19 = 955921838 main.x20 = 1032962527 main.x21 = 1611130332 main.x22 = 1519104985 main.x23 = 197729563 main.x24 = 2816157076 main.x25 = 952596001 main.x26 = 3465507222 main.x27 = 1798382812 main.x28 = 2201738451 main.x29 = 2148512090 main.x30 = 3159989583 main.x31 = 1124684398 main.instr_xor = 1 main.X_read_free = 1 main.read_Y_x10 = 1 main.read_Z_x11 = 1 main.W = 0 main.reg_write_X_tmp1 = 0 main.reg_write_Y_tmp1 = 0 main.reg_write_Z_tmp1 = 0 main.reg_write_W_tmp1 = 0 main.tmp1 = 0 main.reg_write_X_tmp2 = 0 main.reg_write_Y_tmp2 = 0 main.reg_write_Z_tmp2 = 0 main.reg_write_X_tmp3 = 0 main.reg_write_Y_tmp3 = 0 main.reg_write_Y_tmp4 = 0 main.tmp4 = 0 main.reg_write_X_lr_sc_reservation = 0 main.reg_write_Y_lr_sc_reservation = 0 main.lr_sc_reservation = 0 main.reg_write_X_x0 = 0 main.reg_write_Z_x0 = 0 main.reg_write_X_x1 = 0 main.reg_write_Y_x1 = 0 main.reg_write_X_x2 = 0 main.reg_write_Y_x2 = 0 main.reg_write_X_x3 = 0 main.reg_write_Y_x3 = 0 main.x3 = 0 main.reg_write_X_x4 = 0 main.reg_write_Y_x4 = 0 main.x4 = 0 main.reg_write_X_x5 = 0 main.reg_write_Y_x5 = 0 main.reg_write_X_x6 = 0 main.reg_write_Y_x6 = 0 main.reg_write_X_x7 = 0 main.reg_write_Y_x7 = 0 main.reg_write_X_x8 = 0 main.reg_write_Y_x8 = 0 main.reg_write_X_x9 = 0 main.reg_write_Y_x9 = 0 main.reg_write_Y_x10 = 0 main.reg_write_W_x10 = 0 main.reg_write_X_x11 = 0 main.reg_write_Y_x11 = 0 main.reg_write_Z_x11 = 0 main.reg_write_X_x12 = 0 main.reg_write_Y_x12 = 0 main.reg_write_Z_x12 = 0 main.reg_write_X_x13 = 0 main.reg_write_Y_x13 = 0 main.reg_write_Z_x13 = 0 main.reg_write_X_x14 = 0 main.reg_write_Y_x14 = 0 main.reg_write_Z_x14 = 0 main.reg_write_X_x15 = 0 main.reg_write_Y_x15 = 0 main.reg_write_X_x16 = 0 main.reg_write_Y_x16 = 0 main.reg_write_Z_x16 = 0 main.reg_write_X_x17 = 0 main.reg_write_Y_x17 = 0 main.reg_write_Z_x17 = 0 main.reg_write_X_x18 = 0 main.reg_write_Y_x18 = 0 main.reg_write_X_x19 = 0 main.reg_write_Y_x19 = 0 main.reg_write_X_x20 = 0 main.reg_write_Y_x20 = 0 main.reg_write_X_x21 = 0 main.reg_write_Y_x21 = 0 main.reg_write_X_x22 = 0 main.reg_write_Y_x22 = 0 main.reg_write_X_x23 = 0 main.reg_write_Y_x23 = 0 main.reg_write_X_x24 = 0 main.reg_write_Y_x24 = 0 main.reg_write_X_x25 = 0 main.reg_write_Y_x25 = 0 main.reg_write_X_x26 = 0 main.reg_write_Y_x26 = 0 main.reg_write_X_x27 = 0 main.reg_write_Y_x27 = 0 main.reg_write_X_x28 = 0 main.reg_write_Y_x28 = 0 main.reg_write_X_x29 = 0 main.reg_write_Y_x29 = 0 main.reg_write_X_x30 = 0 main.reg_write_Y_x30 = 0 main.reg_write_X_x31 = 0 main.reg_write_Y_x31 = 0 main.instr_load_bootloader_input = 0 main.instr_assert_bootloader_input = 0 main.instr_jump_to_bootloader_input = 0 main.instr_mstore_bootloader = 0 main.instr_mload = 0 main.instr_mstore = 0 main.instr_load_label = 0 main.instr_load_label_param_l = 0 main.instr_jump = 0 main.instr_jump_param_l = 0 main.instr_jump_dyn = 0 main.instr_branch_if_nonzero = 0 main.instr_branch_if_nonzero_param_l = 0 main.instr_branch_if_zero = 0 main.instr_branch_if_zero_param_l = 0 main.instr_skip_if_zero = 0 main.instr_branch_if_positive = 0 main.instr_branch_if_positive_param_l = 0 main.instr_is_positive = 0 main.instr_is_equal_zero = 0 main.instr_is_not_equal_zero = 0 main.instr_and = 0 main.instr_or = 0 main.instr_poseidon_gl = 0 main.instr_shl = 0 main.instr_shr = 0 main.instr_split_gl = 0 main.instr_wrap = 0 main.instr_wrap_signed = 0 main.instr_sign_extend_byte = 0 main.instr_sign_extend_16_bits = 0 main.instr_to_signed = 0 main.instr_wrap16 = 0 main.instr_divremu = 0 main.instr_mul = 0 main.instrjump_to_operation = 0 main.instrreset = 0 main.instr__loop = 0 main.instr_return = 0 main.X_const = 0 main.read_X_lr_sc_reservation = 0 main.read_X_tmp1 = 0 main.read_X_tmp2 = 0 main.read_X_tmp3 = 0 main.read_X_tmp4 = 0 main.read_X_x0 = 0 main.read_X_x1 = 0 main.read_X_x10 = 0 main.read_X_x11 = 0 main.read_X_x12 = 0 main.read_X_x13 = 0 main.read_X_x14 = 0 main.read_X_x15 = 0 main.read_X_x16 = 0 main.read_X_x17 = 0 main.read_X_x18 = 0 main.read_X_x19 = 0 main.read_X_x2 = 0 main.read_X_x20 = 0 main.read_X_x21 = 0 main.read_X_x22 = 0 main.read_X_x23 = 0 main.read_X_x24 = 0 main.read_X_x25 = 0 main.read_X_x26 = 0 main.read_X_x27 = 0 main.read_X_x28 = 0 main.read_X_x29 = 0 main.read_X_x30 = 0 main.read_X_x31 = 0 main.read_X_x4 = 0 main.read_X_x5 = 0 main.read_X_x6 = 0 main.read_X_x7 = 0 main.read_X_x8 = 0 main.read_X_x9 = 0 main.Y_const = 0 main.Y_read_free = 0 main.read_Y_lr_sc_reservation = 0 main.read_Y_tmp1 = 0 main.read_Y_tmp2 = 0 main.read_Y_tmp3 = 0 main.read_Y_tmp4 = 0 main.read_Y_x0 = 0 main.read_Y_x1 = 0 main.read_Y_x11 = 0 main.read_Y_x12 = 0 main.read_Y_x13 = 0 main.read_Y_x14 = 0 main.read_Y_x15 = 0 main.read_Y_x16 = 0 main.read_Y_x17 = 0 main.read_Y_x18 = 0 main.read_Y_x19 = 0 main.read_Y_x2 = 0 main.read_Y_x20 = 0 main.read_Y_x21 = 0 main.read_Y_x22 = 0 main.read_Y_x23 = 0 main.read_Y_x24 = 0 main.read_Y_x25 = 0 main.read_Y_x26 = 0 main.read_Y_x27 = 0 main.read_Y_x28 = 0 main.read_Y_x29 = 0 main.read_Y_x3 = 0 main.read_Y_x30 = 0 main.read_Y_x31 = 0 main.read_Y_x4 = 0 main.read_Y_x5 = 0 main.read_Y_x6 = 0 main.read_Y_x7 = 0 main.read_Y_x8 = 0 main.read_Y_x9 = 0 main.Z_const = 0 main.Z_read_free = 0 main.read_Z_tmp1 = 0 main.read_Z_tmp2 = 0 main.read_Z_tmp3 = 0 main.read_Z_x0 = 0 main.read_Z_x1 = 0 main.read_Z_x10 = 0 main.read_Z_x12 = 0 main.read_Z_x13 = 0 main.read_Z_x14 = 0 main.read_Z_x15 = 0 main.read_Z_x16 = 0 main.read_Z_x17 = 0 main.read_Z_x18 = 0 main.read_Z_x19 = 0 main.read_Z_x20 = 0 main.read_Z_x21 = 0 main.read_Z_x22 = 0 main.read_Z_x23 = 0 main.read_Z_x24 = 0 main.read_Z_x25 = 0 main.read_Z_x26 = 0 main.read_Z_x27 = 0 main.read_Z_x28 = 0 main.read_Z_x29 = 0 main.read_Z_x30 = 0 main.read_Z_x31 = 0 main.read_Z_x5 = 0 main.read_Z_x6 = 0 main.read_Z_x7 = 0 main.read_Z_x8 = 0 main.read_Z_x9 = 0 main.W_read_free = 0 main.read_W_tmp2 = 0 main.read_W_x1 = 0 main.read_W_x10 = 0 main.read_W_x11 = 0 main.read_W_x12 = 0 main.read_W_x13 = 0 main.read_W_x14 = 0 main.read_W_x15 = 0 main.read_W_x16 = 0 main.read_W_x17 = 0 main.read_W_x18 = 0 main.read_W_x19 = 0 main.read_W_x20 = 0 main.read_W_x21 = 0 main.read_W_x22 = 0 main.read_W_x23 = 0 main.read_W_x24 = 0 main.read_W_x25 = 0 main.read_W_x26 = 0 main.read_W_x27 = 0 main.read_W_x28 = 0 main.read_W_x29 = 0 main.read_W_x30 = 0 main.read_W_x31 = 0 main.read_W_x5 = 0 main.read_W_x6 = 0 main.read_W_x7 = 0 main.read_W_x8 = 0 main.read_W_x9 = 0

[2024-04-20T07:57:05Z DEBUG powdr_executor::witgen::vm_processor] Next row (945255):

---------------------

[2024-04-20T07:57:05Z DEBUG powdr_executor::witgen::vm_processor] Set RUST_LOG=trace to understand why these values were chosen. [2024-04-20T07:57:05Z ERROR powdr_executor::witgen::vm_processor] Errors: Error in identity: main.instr_xor { 2, main.Y, main.Z, main.X } is (main_binary.latch * main_binary.sel[2]) { main_binary.operation_id, main_binary.A, main_binary.B, main_binary.C }; Known values in current row (local: 945254, global 945254): main._operation_id = 2 main.pc = 375738 main.Y = 3587217190 main.Z = 2309867857 main.tmp2 = 3 main.tmp3 = 3439329280 main.x1 = 281252400 main.x2 = 45440 main.x5 = 2768571416 main.x6 = 579533747 main.x7 = 4056654378 main.x8 = 957698780 main.x9 = 3259360503 main.reg_write_X_x10 = 1 main.x10 = 3587217190 main.x11 = 2309867857 main.x12 = 3661688610 main.x13 = 1206001142 main.x14 = 588167090 main.x15 = 118882634 main.x16 = 1788731658 main.x17 = 557474404 main.x18 = 3355586798 main.x19 = 955921838 main.x20 = 1032962527 main.x21 = 1611130332 main.x22 = 1519104985 main.x23 = 197729563 main.x24 = 2816157076 main.x25 = 952596001 main.x26 = 3465507222 main.x27 = 1798382812 main.x28 = 2201738451 main.x29 = 2148512090 main.x30 = 3159989583 main.x31 = 1124684398 main.instr_xor = 1 main.X_read_free = 1 main.read_Y_x10 = 1 main.read_Z_x11 = 1 main.W = 0 main.reg_write_X_tmp1 = 0 main.reg_write_Y_tmp1 = 0 main.reg_write_Z_tmp1 = 0 main.reg_write_W_tmp1 = 0 main.tmp1 = 0 main.reg_write_X_tmp2 = 0 main.reg_write_Y_tmp2 = 0 main.reg_write_Z_tmp2 = 0 main.reg_write_X_tmp3 = 0 main.reg_write_Y_tmp3 = 0 main.reg_write_Y_tmp4 = 0 main.tmp4 = 0 main.reg_write_X_lr_sc_reservation = 0 main.reg_write_Y_lr_sc_reservation = 0 main.lr_sc_reservation = 0 main.reg_write_X_x0 = 0 main.reg_write_Z_x0 = 0 main.reg_write_X_x1 = 0 main.reg_write_Y_x1 = 0 main.reg_write_X_x2 = 0 main.reg_write_Y_x2 = 0 main.reg_write_X_x3 = 0 main.reg_write_Y_x3 = 0 main.x3 = 0 main.reg_write_X_x4 = 0 main.reg_write_Y_x4 = 0 main.x4 = 0 main.reg_write_X_x5 = 0 main.reg_write_Y_x5 = 0 main.reg_write_X_x6 = 0 main.reg_write_Y_x6 = 0 main.reg_write_X_x7 = 0 main.reg_write_Y_x7 = 0 main.reg_write_X_x8 = 0 main.reg_write_Y_x8 = 0 main.reg_write_X_x9 = 0 main.reg_write_Y_x9 = 0 main.reg_write_Y_x10 = 0 main.reg_write_W_x10 = 0 main.reg_write_X_x11 = 0 main.reg_write_Y_x11 = 0 main.reg_write_Z_x11 = 0 main.reg_write_X_x12 = 0 main.reg_write_Y_x12 = 0 main.reg_write_Z_x12 = 0 main.reg_write_X_x13 = 0 main.reg_write_Y_x13 = 0 main.reg_write_Z_x13 = 0 main.reg_write_X_x14 = 0 main.reg_write_Y_x14 = 0 main.reg_write_Z_x14 = 0 main.reg_write_X_x15 = 0 main.reg_write_Y_x15 = 0 main.reg_write_X_x16 = 0 main.reg_write_Y_x16 = 0 main.reg_write_Z_x16 = 0 main.reg_write_X_x17 = 0 main.reg_write_Y_x17 = 0 main.reg_write_Z_x17 = 0 main.reg_write_X_x18 = 0 main.reg_write_Y_x18 = 0 main.reg_write_X_x19 = 0 main.reg_write_Y_x19 = 0 main.reg_write_X_x20 = 0 main.reg_write_Y_x20 = 0 main.reg_write_X_x21 = 0 main.reg_write_Y_x21 = 0 main.reg_write_X_x22 = 0 main.reg_write_Y_x22 = 0 main.reg_write_X_x23 = 0 main.reg_write_Y_x23 = 0 main.reg_write_X_x24 = 0 main.reg_write_Y_x24 = 0 main.reg_write_X_x25 = 0 main.reg_write_Y_x25 = 0 main.reg_write_X_x26 = 0 main.reg_write_Y_x26 = 0 main.reg_write_X_x27 = 0 main.reg_write_Y_x27 = 0 main.reg_write_X_x28 = 0 main.reg_write_Y_x28 = 0 main.reg_write_X_x29 = 0 main.reg_write_Y_x29 = 0 main.reg_write_X_x30 = 0 main.reg_write_Y_x30 = 0 main.reg_write_X_x31 = 0 main.reg_write_Y_x31 = 0 main.instr_load_bootloader_input = 0 main.instr_assert_bootloader_input = 0 main.instr_jump_to_bootloader_input = 0 main.instr_mstore_bootloader = 0 main.instr_mload = 0 main.instr_mstore = 0 main.instr_load_label = 0 main.instr_load_label_param_l = 0 main.instr_jump = 0 main.instr_jump_param_l = 0 main.instr_jump_dyn = 0 main.instr_branch_if_nonzero = 0 main.instr_branch_if_nonzero_param_l = 0 main.instr_branch_if_zero = 0 main.instr_branch_if_zero_param_l = 0 main.instr_skip_if_zero = 0 main.instr_branch_if_positive = 0 main.instr_branch_if_positive_param_l = 0 main.instr_is_positive = 0 main.instr_is_equal_zero = 0 main.instr_is_not_equal_zero = 0 main.instr_and = 0 main.instr_or = 0 main.instr_poseidon_gl = 0 main.instr_shl = 0 main.instr_shr = 0 main.instr_split_gl = 0 main.instr_wrap = 0 main.instr_wrap_signed = 0 main.instr_sign_extend_byte = 0 main.instr_sign_extend_16_bits = 0 main.instr_to_signed = 0 main.instr_wrap16 = 0 main.instr_divremu = 0 main.instr_mul = 0 main.instrjump_to_operation = 0 main.instrreset = 0 main.instr__loop = 0 main.instr_return = 0 main.X_const = 0 main.read_X_lr_sc_reservation = 0 main.read_X_tmp1 = 0 main.read_X_tmp2 = 0 main.read_X_tmp3 = 0 main.read_X_tmp4 = 0 main.read_X_x0 = 0 main.read_X_x1 = 0 main.read_X_x10 = 0 main.read_X_x11 = 0 main.read_X_x12 = 0 main.read_X_x13 = 0 main.read_X_x14 = 0 main.read_X_x15 = 0 main.read_X_x16 = 0 main.read_X_x17 = 0 main.read_X_x18 = 0 main.read_X_x19 = 0 main.read_X_x2 = 0 main.read_X_x20 = 0 main.read_X_x21 = 0 main.read_X_x22 = 0 main.read_X_x23 = 0 main.read_X_x24 = 0 main.read_X_x25 = 0 main.read_X_x26 = 0 main.read_X_x27 = 0 main.read_X_x28 = 0 main.read_X_x29 = 0 main.read_X_x30 = 0 main.read_X_x31 = 0 main.read_X_x4 = 0 main.read_X_x5 = 0 main.read_X_x6 = 0 main.read_X_x7 = 0 main.read_X_x8 = 0 main.read_X_x9 = 0 main.Y_const = 0 main.Y_read_free = 0 main.read_Y_lr_sc_reservation = 0 main.read_Y_tmp1 = 0 main.read_Y_tmp2 = 0 main.read_Y_tmp3 = 0 main.read_Y_tmp4 = 0 main.read_Y_x0 = 0 main.read_Y_x1 = 0 main.read_Y_x11 = 0 main.read_Y_x12 = 0 main.read_Y_x13 = 0 main.read_Y_x14 = 0 main.read_Y_x15 = 0 main.read_Y_x16 = 0 main.read_Y_x17 = 0 main.read_Y_x18 = 0 main.read_Y_x19 = 0 main.read_Y_x2 = 0 main.read_Y_x20 = 0 main.read_Y_x21 = 0 main.read_Y_x22 = 0 main.read_Y_x23 = 0 main.read_Y_x24 = 0 main.read_Y_x25 = 0 main.read_Y_x26 = 0 main.read_Y_x27 = 0 main.read_Y_x28 = 0 main.read_Y_x29 = 0 main.read_Y_x3 = 0 main.read_Y_x30 = 0 main.read_Y_x31 = 0 main.read_Y_x4 = 0 main.read_Y_x5 = 0 main.read_Y_x6 = 0 main.read_Y_x7 = 0 main.read_Y_x8 = 0 main.read_Y_x9 = 0 main.Z_const = 0 main.Z_read_free = 0 main.read_Z_tmp1 = 0 main.read_Z_tmp2 = 0 main.read_Z_tmp3 = 0 main.read_Z_x0 = 0 main.read_Z_x1 = 0 main.read_Z_x10 = 0 main.read_Z_x12 = 0 main.read_Z_x13 = 0 main.read_Z_x14 = 0 main.read_Z_x15 = 0 main.read_Z_x16 = 0 main.read_Z_x17 = 0 main.read_Z_x18 = 0 main.read_Z_x19 = 0 main.read_Z_x20 = 0 main.read_Z_x21 = 0 main.read_Z_x22 = 0 main.read_Z_x23 = 0 main.read_Z_x24 = 0 main.read_Z_x25 = 0 main.read_Z_x26 = 0 main.read_Z_x27 = 0 main.read_Z_x28 = 0 main.read_Z_x29 = 0 main.read_Z_x30 = 0 main.read_Z_x31 = 0 main.read_Z_x5 = 0 main.read_Z_x6 = 0 main.read_Z_x7 = 0 main.read_Z_x8 = 0 main.read_Z_x9 = 0 main.W_read_free = 0 main.read_W_tmp2 = 0 main.read_W_x1 = 0 main.read_W_x10 = 0 main.read_W_x11 = 0 main.read_W_x12 = 0 main.read_W_x13 = 0 main.read_W_x14 = 0 main.read_W_x15 = 0 main.read_W_x16 = 0 main.read_W_x17 = 0 main.read_W_x18 = 0 main.read_W_x19 = 0 main.read_W_x20 = 0 main.read_W_x21 = 0 main.read_W_x22 = 0 main.read_W_x23 = 0 main.read_W_x24 = 0 main.read_W_x25 = 0 main.read_W_x26 = 0 main.read_W_x27 = 0 main.read_W_x28 = 0 main.read_W_x29 = 0 main.read_W_x30 = 0 main.read_W_x31 = 0 main.read_W_x5 = 0 main.read_W_x6 = 0 main.read_W_x7 = 0 main.read_W_x8 = 0 main.read_W_x9 = 0 => Error: Table rows exhausted

thread 'tests::test_zkvm_lr_execute_then_prove' panicked at /home/devadmin/.cargo/git/checkouts/powdr-5ad669c296f4e377/514a0ed/executor/src/witgen/vm_processor.rs:435:9: Witness generation failed. note: run with RUST_BACKTRACE=1 environment variable to display a backtrace test tests::test_zkvm_lr_execute_then_prove ... FAILED

failures:

failures: tests::test_zkvm_lr_execute_then_prove

test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 2 filtered out; finished in 404.86s

error: test failed, to rerun pass --lib