Skip to content

anboysky.base.eth #1621

Closed
Closed

Description

Description:
A clear and concise description of what the bug is.

Action version:
Specify the action version

Platform:

  • Ubuntu
  • macOS
  • Windows

Runner type:

  • Hosted
  • Self-hosted

Tools version:

Repro steps:
A description with steps to reproduce the issue. If you have a public example or repo to share, please provide the link.

Expected behavior:
A description of what you expected to happen.

Actual behavior:
A description of what is actually happening.

Activity

  1. v-jitenderpalsingh commented on Sep 1, 2026

    @v-jitenderpalsingh
    Contributor

    Closing as spam.

  2. eraandriyanerandriyan-blip commented on Sep 2, 2026

    @eraandriyanerandriyan-blip
    Author

    Update — the diagnostic endpoint now returns raw oog_info samples and the format is not what the original issue body assumed. There's no struct at all:

    oog_info: Execution halted: OutOfGas(Basic)
    oog_info: Execution halted: OutOfGas(Basic)
    oog_info: Execution halted: OutOfGas(Basic)
    

    (All three random non-null samples have this exact text. The accompanying divergence_location for the same rows is the usual DivergenceLocation { contract: 0x…, function_selectors: [], pc: 0, call_depth: 0, opcode: 0, opcode_name: "" } — itself with placeholder values per #3.)

    So the oog_info field as it currently lands in the parquet is just the EVM error's Display string — no contract address, no pc, no call depth, no opcode, no gas_remaining. The consumer's regex pipeline (which expects OutOfGasInfo { contract: 0x…, pc: …, call_depth: …, opcode_name: "…", pattern: "…", gas_remaining: … }) was anticipating richer data that never gets written.

    So this isn't the same shape as #3 (struct with placeholders) — it's "the structured OOG context never gets constructed; only the error display reaches the parquet."

    What the consumer needs from oog_info to make the OOG analysis useful:

    • contract: the address whose call ran out of gas (probably the inner-most callee)
    • pc: program counter at the OOG step
    • call_depth: how deep the call stack was when OOG fired
    • opcode / opcode_name: which opcode was executing when gas ran out
    • pattern: a coarse classifier (e.g. Basic / Memory / Precompile / StateGas) — OutOfGas(Basic) is already a step in this direction, but it would help to also surface things like OutOfGas(Stipend2300) for the 63/64 stipend case
    • gas_remaining: gas at the point of OOG (in the current frame and probably the parent frame too)

    A struct like OutOfGasInfo { contract, pc, call_depth, opcode, opcode_name, pattern, gas_remaining } written via Debug would parse cleanly under the existing regex shape used for DivergenceLocation, so this is largely about plumbing the missing fields through.

    Originally posted by @CarlBeek in #6

  3. eraandriyanerandriyan-blip commented on Sep 2, 2026

    @eraandriyanerandriyan-blip
    Author

    ``

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingspam

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions