relayCall reverted in client: no gas for innerRelayCall

Hi there,
I’m using GSN in 2.2.5 version on Polygon chain and from some time now I’ve started receiving an error below for ~90% of transaction requests. RelayHub has necessary funds > 5 MATIC, gas prices span from 30kk up to 65kk. Some transactions are going through successfully :open_mouth:
but for others I can’t find the root cause of failure :frowning:

https://matic1-220.relays.opengsn.org/gsn1 => local view call to 'relayCall()' reverted: view call to 'relayCall' reverted in client: no gas for innerRelayCall

Does anyone had a similar case ? Would appreciate any tips what else to check.
Thanks!

Hello @riddler
It is hard to say what caused the issue. If you can share more details about your project we could try to see what is the issue. If you want we can create a chat in Discord to investigate. Note that we have been trying to move away from the old v2.2.x for some time now, and it may have known issues that are hard to fix.

The error “no gas for innerRelayCall” comes from these lines in the RelayHub.sol:

        maxPossibleGas =
            config.gasOverhead.add(
            gasAndDataLimits.preRelayedCallGasLimit).add(
            gasAndDataLimits.postRelayedCallGasLimit).add(
            relayRequest.request.gas).add(
            dataGasCost).add(
            externalCallDataCost);

        // This transaction must have enough gas to forward the call to the recipient with the requested amount, and not
        // run out of gas later in this function.
        require(
            externalGasLimit >= maxPossibleGas,
            "no gas for innerRelayCall");

This means that at some point the transaction may, theoretically, consume more gas than is given to it by the relay server. It can be a large eelayRequest.request.gas. a msg.data filled with zeroes. Or preRelayedCallGasLimit/postRelayedCallGasLimit values that are too big.

Please tell me how I can observe the issue and I will try to debug it.