MetaMask / MetaMask/metamask-mobile

[Bug]: Errors observed when trying to generate quotes for Swapping NEVM tokens

Open
#34,731 1 comment 0 reactions 0 assignees View on GitHub
regression-RC-8.7.0 Sev1-high ta-needs-engineer-escalation ta-triaged team-core-platform type-bug
Dominant language
TypeScript
Stars
3k
Forks
1.7k
Avg merge
1d 14h
Merged PRs (30d)
669

Description

### Describe the bug

Errors observed when trying to generate quotes for Swapping NEVM tokens:
- It takes a lot of time to generate the quote for SOL or TRX swaps
- For SOL(Solana) to USDC(Solana), quotes are frequently changing,
- Sometimes swap button getting enabled with some quote generated
- Sometimes saying quote not loading
- At times it is also showing Network Fee - "Paid by Metamask", but while trying to Swap, it fails

Errors in logs:

> ERROR "npm:@metamask/solana-wallet-snap" crashed due to an unhandled error: [Error: npm:@metamask/solana-wallet-snap failed to respond to the request in time.]
> WARN Snap "npm:@metamask/solana-wallet-snap" failed to terminate gracefully.
> WARN [Error: premature close]
> ERROR Error setting minimum balance for rent exemption [Error: npm:@metamask/solana-wallet-snap was stopped and the request was cancelled. This is likely because the Snap crashed.]
> ERROR Failed to compute non-EVM fees for quote 8fcc80fd0b77ffc6175b19279eec5305: [Error: npm:@metamask/solana-wallet-snap was stopped and the request was cancelled. This is likely because the Snap crashed.]
> ERROR Failed to set selected accounts for npm:@metamask/solana-wallet-snap snap: 'npm:@metamask/solana-wallet-snap failed to respond to the request in time.'
> LOG [MetaMask DEBUG]: SnapController state persisted successfully
> LOG [MetaMask DEBUG]: BridgeController state persisted successfully
> LOG [MetaMask DEBUG]: [ENGINE LOG] Engine+setupSnapProvider: Setup stream for Snap npm:@metamask/solana-wallet-snap
> LOG [MetaMask DEBUG]: [SNAP BRIDGE] Initializing SnapBridge for Snap: npm:@metamask/solana-wallet-snap
> LOG [MetaMask DEBUG]: [SNAP BRIDGE] Setting up provider connection
> LOG [MetaMask DEBUG]: [SNAP BRIDGE] Setting up provider engine
> LOG [MetaMask DEBUG]: SnapController state persisted successfully
> LOG [MetaMask DEBUG]: BridgeController state persisted successfully
> LOG [MetaMask DEBUG]: AssetsController state persisted successfully
> LOG [MetaMask DEBUG]: GasFeeController state persisted successfully
> ERROR "npm:@metamask/tron-wallet-snap" crashed due to an unhandled error: [Error: npm:@metamask/tron-wallet-snap failed to respond to the request in time.]
> ERROR "npm:@metamask/bitcoin-wallet-snap" crashed due to an unhandled error: [Error: npm:@metamask/bitcoin-wallet-snap failed to respond to the request in time.]
> WARN Snap "npm:@metamask/tron-wallet-snap" failed to terminate gracefully.
> WARN [Error: premature close]
> ERROR Failed to compute non-EVM fees for quote 288424e7-85ae-4419-89c7-f4b672631410: [Error: npm:@metamask/tron-wallet-snap failed to respond to the request in time.]
> ERROR An error occurred while executing an event for Snap "npm:@metamask/tron-wallet-snap": [Error: npm:@metamask/tron-wallet-snap was stopped and the request was cancelled. This is likely because the Snap crashed.]
> ERROR Failed to compute non-EVM fees for quote 9901ce83-44e1-4fca-aefe-0fdc600af64d: [Error: npm:@metamask/tron-wallet-snap was stopped and the request was cancelled. This is likely because the Snap crashed.]
> ERROR An error occurred while executing an event for Snap "npm:@metamask/tron-wallet-snap": [Error: npm:@metamask/tron-wallet-snap was stopped and the request was cancelled. This is likely because the Snap crashed.]
> LOG [MetaMask DEBUG]: BridgeController state persisted successfully
> LOG [MetaMask DEBUG]: AssetsController state persisted successfully
> LOG [MetaMask DEBUG]: SnapController state persisted successfully
> WARN Snap "npm:@metamask/bitcoin-wallet-snap" failed to terminate gracefully.
> WARN [Error: premature close]
> ERROR An error occurred while executing an event for Snap "npm:@metamask/bitcoin-wallet-snap": [Error: npm:@metamask/bitcoin-wallet-snap failed to respond to the request in time.]
> ERROR An error occurred while executing an event for Snap "npm:@metamask/bitcoin-wallet-snap": [Error: npm:@metamask/bitcoin-wallet-snap was stopped and the request was cancelled. This is likely because the Snap crashed.]
> ERROR An error occurred while executing an event for Snap "npm:@metamask/bitcoin-wallet-snap": [Error: npm:@metamask/bitcoin-wallet-snap was stopped and the request was cancelled. This is likely because the Snap crashed.]
> ERROR An error occurred while executing an event for Snap "npm:@metamask/bitcoin-wallet-snap": [Error: npm:@metamask/bitcoin-wallet-snap was stopped and the request was cancelled. This is likely because the Snap crashed.]
> ERROR An error occurred while executing an event for Snap "npm:@metamask/bitcoin-wallet-snap": [Error: npm:@metamask/bitcoin-wallet-snap was stopped and the request was cancelled. This is likely because the Snap crashed.]
> LOG [MetaMask DEBUG]: [ENGINE LOG] Engine+setupSnapProvider: Setup stream for Snap npm:@metamask/tron-wallet-snap

> error! status: 400", "params": {"assets": [[Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object]]}, "snapId": "npm:@metamask/tron-wallet-snap"}
> LOG [MetaMask DEBUG]: MultichainAssetsController state persisted successfully
> LOG [MetaMask DEBUG]: MultichainBalancesController state persisted successfully
> ERROR Snap request failed for onAssetsConversion: {"handler": "onAssetsConversion", "message": "HTTP error! status: 400", "params": {"conversions": [[Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object]]}, "snapId": "npm:@metamask/tron-wallet-snap"}
> ERROR Snap request failed for onAssetsMarketData: {"handler": "onAssetsMarketData", "message": "HTTP error! status: 400", "params": {"assets": [[Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object]]}, "snapId": "npm:@metamask/tron-wallet-snap"}
> ERROR Snap request failed for onAssetsConversion: {"handler": "onAssetsConversion", "message": "HTTP error! status: 400", "params": {"conversions": [[Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object]]}, "snapId": "npm:@metamask/tron-wallet-snap"}
> ERROR Snap request failed for onAssetsMarketData: {"handler": "onAssetsMarketData", "message": "HTTP error! status: 400", "params": {"assets": [[Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object]]}, "snapId": "npm:@metamask/tron-wallet-snap"}
> ERROR Snap request failed for onAssetsConversion: {"handler": "onAssetsConversion", "message": "HTTP error! status: 400", "params": {"conversions": [[Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object]]}, "snapId": "npm:@metamask/tron-wallet-snap"}
> ERROR Snap request failed for onAssetsMarketData: {"handler": "onAssetsMarketData", "message": "HTTP error! status: 400", "params": {"assets": [[Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object]]}, "snapId": "npm:@metamask/tron-wallet-snap"}
> ERROR Snap request failed for onAssetsConversion: {"handler": "onAssetsConversion", "message": "HTTP error! status: 400", "params": {"conversions": [[Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object]]}, "snapId": "npm:@metamask/tron-wallet-snap"}
> ERROR Snap request failed for onAssetsMarketData: {"handler": "onAssetsMarketData", "message": "HTTP error! status: 400", "params": {"assets": [[Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object]]}, "snapId": "npm:@metamask/tron-wallet-snap"}
> LOG [MetaMask DEBUG]: MultichainBalancesController state persisted successfully
> LOG [MetaMask DEBUG]: MultichainAssetsController state persisted successfully
> LOG [MetaMask DEBUG]: MultichainBalancesController state persisted successfully
> LOG [MetaMask DEBUG]: MultichainAssetsController state persisted successfully
> ERROR Snap request failed for onAssetsMarketData: {"handler": "onAssetsMarketData", "message": "HTTP error! status: 400", "params": {"assets": [[Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object]]}, "snapId": "npm:@metamask/tron-wallet-snap"}
> ERROR Snap request failed for onAssetsConversion: {"handler": "onAssetsConversion", "message": "HTTP error! status: 400", "params": {"conversions": [[Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object]]}, "snapId": "npm:@metamask/tron-wallet-snap"}
> ERROR Snap request failed for onAssetsConversion: {"handler": "onAssetsConversion", "message": "HTTP error! status: 400", "params": {"conversions": [[Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object]]}, "snapId": "npm:@metamask/tron-wallet-snap"}
> ERROR Snap request failed for onAssetsMarketData: {"handler": "onAssetsMarketData", "message": "HTTP error! status: 400", "params": {"assets": [[Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object]]}, "snapId": "npm:@metamask/tron-wallet-snap"}
> ERROR Snap request failed for onAssetsConversion: {"handler": "onAssetsConversion", "message": "HTTP error! status: 400", "params": {"conversions": [[Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object]]}, "snapId": "npm:@metamask/tron-wallet-snap"}

### Expected behavior

_No response_

### Screenshots/Recordings

https://github.com/user-attachments/assets/3b80f122-70c4-4d6f-9c87-8601b500acba

### Steps to reproduce

Perform Swap activities for any NEVM chain like SOL or TRON

### Error messages or log output

```shell

```

### Where was this bug found?

Internal release testing

### Version

8.7.0

### Build number

6442

### Build type

None

### Device

Pixel 9 Pro XL

### Operating system

Android

### Additional context

_No response_

### Severity

_No response_

Contributor guide

Open the contributing guide

Research direction

No source files or tests are named. Start by reproducing SOL and TRX quote generation and tracing the wallet Snap timeout, cancellation, and HTTP 400 errors shown in the logs; done means quotes load consistently and swaps no longer fail after a quote is shown.

Written by the indexing model from the issue text.

Assessment

Tech stack
react-native, typescript
Domain
api, mobile
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.