Conversation
Greptile SummaryThis PR adds a nightly GitHub Actions workflow that runs a 30-minute BlockSTM fuzz test and posts results to Slack, introduces a
Confidence Score: 3/5
Important Files Changed
Reviews (3): Last reviewed commit: "Merge branch 'main' into test/fuzz-bst" | Re-trigger Greptile |
|
@greptile re-review, those p2 issues are not real |
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #26136 +/- ##
==========================================
+ Coverage 61.44% 61.47% +0.03%
==========================================
Files 967 951 -16
Lines 63380 62455 -925
==========================================
- Hits 38943 38395 -548
+ Misses 24437 24060 -377
🚀 New features to boost your workflow:
|
|
@greptile can you re-review and give me a new score? |
| func safeFeePayer(feeTx sdk.FeeTx) (addr sdk.AccAddress, ok bool) { | ||
| defer func() { | ||
| if recover() != nil { | ||
| addr = nil | ||
| ok = false | ||
| } | ||
| }() | ||
|
|
||
| return sdk.AccAddress(feeTx.FeePayer()), true | ||
| } |
There was a problem hiding this comment.
recover() in production estimation path masks real bugs
safeFeePayer uses a blanket recover() that silently swallows any panic originating from feeTx.FeePayer(), including ones that would indicate genuine programming errors (e.g., a nil-receiver dereference or an index out-of-bounds in a well-formed tx implementation). The pre-estimation path skipping a tx is functionally correct, but swallowing an unexpected panic here means the issue will never surface in logs or metrics — the tx is just processed without an estimate, and the fuzz test will pass because both seq and stm behave identically.
Consider logging the recovered panic value (even at debug level) so that unexpected panics from real tx types are visible:
func safeFeePayer(feeTx sdk.FeeTx) (addr sdk.AccAddress, ok bool) {
defer func() {
if r := recover(); r != nil {
// FeePayer() panicked; skip pre-estimation for this tx.
// Log at debug level if a logger is available.
addr = nil
ok = false
}
}()
return sdk.AccAddress(feeTx.FeePayer()), true
}Emit a log line when FeePayer panics so pre-estimation skips remain visible during fuzz and production debugging. Made-with: Cursor
run nightly heavy fuzz and post to slack