Skip to content

Scanner MDB_NOTFOUND after webhook_add (single account, ARM64) #238

Description

@SoulReaver-SS

monero-lws v1.0-alpha (commit fe3f409)
Raspberry Pi 5, Debian 12 (Bookworm), ARM64
Docker via monero-suite, bind-mounted LMDB
Single account, ~300+ transactions, --max-subaddresses=100000

Steps to reproduce:

  1. Let scanner reach chain tip, confirm it's processing blocks normally

  2. Register webhooks via admin REST:
    POST /webhook_add {"params":{"url":"...","type":"tx-confirmation","address":"...","confirmations":1}}
    POST /webhook_add {"params":{"url":"...","type":"tx-spend","address":"..."}}
    Both return 200 OK with valid event_id

  3. Scanner processes a few more blocks, then crashes:

    lmdb error (storage.cpp:3122): MDB_NOTFOUND: No matching key/data pair found
    Scanner shutdown with error Failed to update accounts on disk
    (thrown at scanner.cpp:1540): MDB_NOTFOUND: No matching key/data pair found

  4. Container crash-loops at the same block height on every restart

Reproduced 3 times in one session:

  • Crash at 3,630,424 (~30 blocks after registration)
  • Restored pre-webhook LMDB backup, scanner passed same block fine
  • Re-registered webhooks, crash at 3,630,440 (~5 blocks after)
  • Restored, passed again
  • Re-registered, crash at 3,630,440 again

Webhooks do fire correctly before the crash (valid payloads received).
Without webhooks, scanner runs indefinitely.

Flags: --admin-rest-server=http://0.0.0.0:8444 --disable-admin-auth
--auto-accept-creation --exchange-rate-interval=15
--confirm-external-bind --log-level=4

Debug logs (--log-level=4) from the third reproduction:

Webhook registration:
2026-03-15 02:35:17.528 D New connection to 172.18.0.1:52650 / 0x555592fe3b00
2026-03-15 02:35:17.528 D Reading new REST request from 0x555592fe3b00
2026-03-15 02:35:17.528 D Received HTTP request from 0x555592fe3b00 to target /webhook_add
2026-03-15 02:35:17.528 D Running REST handler /webhook_add on 0x555592fe3b00
2026-03-15 02:35:17.528 I [PARSE URI] regex not matched for uri: ^(([^:]?)://)?([(.)](:(\d+))?)(.)?
2026-03-15 02:35:17.530 D Sending HTTP 200 OK (157 bytes) to 0x555592fe3b00
2026-03-15 02:35:23.102 D New connection to 172.18.0.1:52658 / 0x7ffe6c0262d0
2026-03-15 02:35:23.102 D Received HTTP request from 0x7ffe6c0262d0 to target /webhook_add
2026-03-15 02:35:23.102 D Running REST handler /webhook_add on 0x7ffe6c0262d0
2026-03-15 02:35:23.103 I [PARSE URI] regex not matched for uri: ^(([^:]
?)://)?([(.)](:(\d+))?)(.)?
2026-03-15 02:35:23.105 D Sending HTTP 200 OK (157 bytes) to 0x7ffe6c0262d0

Crash ~5 blocks later:
2026-03-15 03:19:22.005 I Thread 3 processed 3 blocks(s) @ height 3630440 against 1 account(s)
2026-03-15 03:19:22.005 E lmdb error (storage.cpp:3122): MDB_NOTFOUND: No matching key/data pair found
2026-03-15 03:19:22.005 E Scanner shutdown with error Failed to update accounts on disk (thrown at scanner.cpp:1540): MDB_NOTFOUND: No matching key/data pair found
2026-03-15 03:19:22.006 D Stopping rpc::scanner::server async operations
2026-03-15 03:19:22.010 D Destroying connection 0x7ffe6c022000
2026-03-15 03:19:22.010 D Destroying connection 0x7ffe6c0262d0

Note: the [PARSE URI] regex warning fires on every webhook URL
and also on server bind addresses during startup. URLs are stored
correctly in LMDB per webhook_list output. Unclear if related.

Webhook list confirmed correct before crash:
POST /webhook_list returned both tx-confirmation and tx-spend
with correct URLs and event_ids.

Related: #225 (same MDB_NOTFOUND error but different trigger -
large rescan with 5K accounts vs single account with webhook registration)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions