lightninglabs / taproot-assets

A layer 1 daemon, for the Taproot Assets Protocol specification, written in Go (golang)
MIT License
439 stars 106 forks source link

[bug]: SIGSEGV after `BatchCaretaker` initializes non-finalized batches #940

Closed Liongrass closed 2 weeks ago

Liongrass commented 3 weeks ago

Background

I tried to mint an asset. I first ran

tapcli assets mint --type normal --name neocoin --supply 100000 --meta_bytes 66616e746173746963206d6f6e6579 --new_grouped_asset

Then I wanted to inspect the batch

tapcli --tlscertpath ~/.lit/tls.cert --rpcserver=localhost:8443 --network=testnet assets mint batches

As a result, litd crashed and when restarted, eventually crashes with the same error.

2024-06-08 14:33:46.576 [DBG] GRPC: [core] [Channel #142 SubChannel #143] Subchannel created
2024-06-08 14:33:46.576 [DBG] GRPC: [core] [Channel #142] Channel Connectivity change to CONNECTING
2024-06-08 14:33:46.576 [INF] RPCS: Trader server is now active
2024-06-08 14:33:46.577 [DBG] STAT: Setting the pool sub-server as running
2024-06-08 14:33:46.577 [INF] SSVR: Opening sqlite3 database at: /home/ubuntu/.tapd/data/testnet/tapd.db
2024-06-08 14:33:46.585 [DBG] GRPC: [core] [Channel #142 SubChannel #143] Subchannel Connectivity change to CONNECTING
2024-06-08 14:33:46.585 [DBG] GRPC: [core] [Channel #142 SubChannel #143] Subchannel picks a new address "test.pool.lightning.finance:12010" to connect
2024-06-08 14:33:46.586 [DBG] GRPC: [core] [pick-first-lb 0xc00055b3e0] Received SubConn state update: 0xc00055b650, {ConnectivityState:CONNECTING ConnectionError:<nil>}
2024-06-08 14:33:46.587 [DBG] RPCS: [/lnrpc.Lightning/SubscribeChannelEvents] requested
2024-06-08 14:33:46.587 [DBG] RPCS: [/lnrpc.Lightning/ChannelAcceptor] requested
2024-06-08 14:33:46.598 [DBG] GRPC: [core] [Channel #137 SubChannel #138] Subchannel Connectivity change to READY
2024-06-08 14:33:46.598 [DBG] GRPC: [core] [pick-first-lb 0xc000568b10] Received SubConn state update: 0xc000568f60, {ConnectivityState:READY ConnectionError:<nil>}
2024-06-08 14:33:46.599 [DBG] GRPC: [core] [Channel #137] Channel Connectivity change to READY
2024-06-08 14:33:46.603 [INF] TADB: Applying migrations from version=18
2024-06-08 14:33:46.608 [INF] SSVR: Configuring testnet.universe.lightning.finance:10029 as initial Universe federation server
2024-06-08 14:33:46.609 [INF] SRVR: Version: 0.3.2-alpha commit=v0.3.3-0.20240607163641-deba7dd9340e, build=production, logging=default, debuglevel=info
2024-06-08 14:33:46.609 [INF] SRVR: Active network: testnet3
2024-06-08 14:33:46.609 [INF] RPCS: Validating RPC requests based on macaroon at: /home/ubuntu/.tapd/data/testnet/admin.macaroon
2024-06-08 14:33:46.615 [INF] GRDN: Starting ChainPlanter
2024-06-08 14:33:46.621 [INF] GRDN: Retrieved 2 non-finalized batches from DB
2024-06-08 14:33:46.621 [INF] GRDN: Launching ChainCaretaker(024613161ec23c8140dc613e2d2b01d806c523a562db206b435afc9e7fdd7ff090)
2024-06-08 14:33:46.623 [INF] GRDN: Starting asset custodian
2024-06-08 14:33:46.624 [INF] GRDN: BatchCaretaker(024613161ec23c8140dc613e2d2b01d806c523a562db206b435afc9e7fdd7ff090), advancing from state=BatchStateFrozen to state=BatchStateBroadcast
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x1a77854]

goroutine 1417 [running]:
github.com/lightninglabs/taproot-assets/tapgarden.(*BatchCaretaker).stateStep(0xc00030e8c0, 0x60?)
    github.com/lightninglabs/taproot-assets@v0.3.3-0.20240607163641-deba7dd9340e/tapgarden/caretaker.go:577 +0xb4
github.com/lightninglabs/taproot-assets/tapgarden.(*BatchCaretaker).advanceStateUntil(0xc00030e8c0, 0x1, 0x3)
    github.com/lightninglabs/taproot-assets@v0.3.3-0.20240607163641-deba7dd9340e/tapgarden/caretaker.go:292 +0x210
github.com/lightninglabs/taproot-assets/tapgarden.(*BatchCaretaker).assetCultivator(0xc00030e8c0)
    github.com/lightninglabs/taproot-assets@v0.3.3-0.20240607163641-deba7dd9340e/tapgarden/caretaker.go:351 +0x23e
created by github.com/lightninglabs/taproot-assets/tapgarden.(*BatchCaretaker).Start.func1 in goroutine 1
    github.com/lightninglabs/taproot-assets@v0.3.3-0.20240607163641-deba7dd9340e/tapgarden/caretaker.go:155 +0x67
EDITED
ok this is the super valuable part:
2024-06-08 14:33:46.621 [INF] GRDN: Retrieved 2 non-finalized batches from DB
2024-06-08 14:33:46.621 [INF] GRDN: Launching ChainCaretaker(024613161ec23c8140dc613e2d2b01d806c523a562db206b435afc9e7fdd7ff090)
2024-06-08 14:33:46.623 [INF] GRDN: Starting asset custodian
2024-06-08 14:33:46.624 [INF] GRDN: BatchCaretaker(024613161ec23c8140dc613e2d2b01d806c523a562db206b435afc9e7fdd7ff090), advancing from state=BatchStateFrozen to state=BatchStateBroadcast
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x1a77854]

Your environment

I'm on commit ee468bab4893717261632c04e1de10ee0f74bb72 of the custom-channels-integration branch of litd, running in integrated mode.

Liongrass commented 3 weeks ago

Full logs: litd.log