Open BC-A opened 6 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] 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
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
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
Execute the following command to test