@@ -173,6 +173,10 @@ handle_microblock( fd_bank_ctx_t * ctx,
173173 txn -> flags &= ~FD_TXN_P_FLAGS_EXECUTE_SUCCESS ;
174174
175175 txn_ctx -> exec_err = fd_runtime_prepare_and_execute_txn ( ctx -> banks , ctx -> _bank_idx , txn_ctx , txn , NULL , & ctx -> exec_stack , NULL );
176+
177+ /* Stash the result in the flags value so that pack can inspect it. */
178+ txn -> flags = (txn -> flags & 0x00FFFFFFU ) | ((uint )(- txn_ctx -> exec_err )<<24 );
179+
176180 if ( FD_UNLIKELY ( !(txn_ctx -> flags & FD_TXN_P_FLAGS_SANITIZE_SUCCESS ) ) ) {
177181 fd_pack_rebate_sum_add_txn ( ctx -> rebater , txn , NULL , 1UL );
178182 ctx -> metrics .txn_result [ fd_bank_err_from_runtime_err ( txn_ctx -> exec_err ) ]++ ;
@@ -185,11 +189,6 @@ handle_microblock( fd_bank_ctx_t * ctx,
185189 FD_TEST ( txn_ctx -> flags & FD_TXN_P_FLAGS_EXECUTE_SUCCESS );
186190 txn -> flags |= FD_TXN_P_FLAGS_EXECUTE_SUCCESS | FD_TXN_P_FLAGS_SANITIZE_SUCCESS ;
187191
188- /* Stash the result in the flags value so that pack can inspect it. */
189- /* TODO: Need to translate the err to a hacky Frankendancer style err
190- that pack and GUI expect ... */
191- txn -> flags = (txn -> flags & 0x00FFFFFFU ) | ((uint )(- txn_ctx -> exec_err )<<24 );
192-
193192 ctx -> metrics .txn_result [ fd_bank_err_from_runtime_err ( txn_ctx -> exec_err ) ]++ ;
194193
195194 /* Commit must succeed so no failure path. Once commit is called,
@@ -207,6 +206,9 @@ handle_microblock( fd_bank_ctx_t * ctx,
207206 fd_runtime_finalize_txn ( ctx -> txn_ctx -> funk , ctx -> txn_ctx -> progcache , txn_ctx -> status_cache , txn_ctx -> xid , txn_ctx , bank , NULL );
208207
209208 if ( FD_UNLIKELY ( !txn_ctx -> flags ) ) {
209+ /* If the transaction failed to fit into the block, we need to
210+ updated the transaction flag with the error code. */
211+ txn -> flags = (txn -> flags & 0x00FFFFFFU ) | ((uint )(- txn_ctx -> exec_err )<<24 );
210212 fd_cost_tracker_t * cost_tracker = fd_bank_cost_tracker_locking_modify ( bank );
211213 uchar * signature = (uchar * )txn_ctx -> txn .payload + TXN ( & txn_ctx -> txn )-> signature_off ;
212214 int res = fd_cost_tracker_calculate_cost_and_add ( cost_tracker , txn_ctx );
0 commit comments