Closed rootulp closed 5 months ago
Just confirmed, still present on main
On v1.x, app.checkState is non-nil when exporting:
3:28PM INF app.checkState &{{0x140005d4800 map[0x14000614480:0x140005d4fc0 0x14000614490:0x140005d4f00 0x140006144a0:0x140005d4b40 0x140006144b0:0x140005d4d80 0x140006144c0:0x140005d4b00 0x140006144d0:0x140005d4d00 0x140006144e0:0x140005d4880 0x140006144f0:0x140005d4d40 0x14000614500:0x140005d4a80 0x14000614510:0x140005d48c0 0x14000614520:0x140005d49c0 0x14000614530:0x140005d4e80 0x14000614540:0x140005d4a40 0x14000614550:0x140005d4dc0 0x14000614560:0x140005d4ec0 0x14000614570:0x140005d4900 0x14000614580:0x140005d4840 0x140006145c0:0x140005d4a00 0x140006145a0:0x140005d4ac0] map[acc:0x14000614480 authz:0x14000614490 bank:0x140006144a0 blob:0x14000614550 capability:0x14000614540 distribution:0x140006144d0 evidence:0x14000614530 feegrant:0x14000614520 gov:0x140006144f0 ibc:0x14000614580 mem_capability:0x140006145c0 mint:0x140006144c0 params:0x14000614500 qgb:0x14000614560 slashing:0x140006144e0 staking:0x140006144b0 transfer:0x14000614570 transient_params:0x140006145a0 upgrade:0x14000614510] <nil> map[]} {{{}} {0x140005d4800 map[0x14000614480:0x140005d4fc0 0x14000614490:0x140005d4f00 0x140006144a0:0x140005d4b40 0x140006144b0:0x140005d4d80 0x140006144c0:0x140005d4b00 0x140006144d0:0x140005d4d00 0x140006144e0:0x140005d4880 0x140006144f0:0x140005d4d40 0x14000614500:0x140005d4a80 0x14000614510:0x140005d48c0 0x14000614520:0x140005d49c0 0x14000614530:0x140005d4e80 0x14000614540:0x140005d4a40 0x14000614550:0x140005d4dc0 0x14000614560:0x140005d4ec0 0x14000614570:0x140005d4900 0x14000614580:0x140005d4840 0x140006145c0:0x140005d4a00 0x140006145a0:0x140005d4ac0] map[acc:0x14000614480 authz:0x14000614490 bank:0x140006144a0 blob:0x14000614550 capability:0x14000614540 distribution:0x140006144d0 evidence:0x14000614530 feegrant:0x14000614520 gov:0x140006144f0 ibc:0x14000614580 mem_capability:0x140006145c0 mint:0x140006144c0 params:0x14000614500 qgb:0x14000614560 slashing:0x140006144e0 staking:0x140006144b0 transfer:0x14000614570 transient_params:0x140006145a0 upgrade:0x14000614510] <nil> map[]} {{0 0} 0 {0 0 <nil>} {[] {0 []}} [] [] [] [] [] [] [] [] []} [] [] {{{{0x14000132028 false [] [] [] <nil> <nil> <nil> <nil> <nil> <nil> <nil> <nil> <nil>}} 1 <nil> [123] [{}] false <nil>}} [] 0x14000011130 <nil> true false [] <nil> 0x14000a26288 0 {1000 1000 1000 3 2000 30 30} {100 100 100 0 200 3 3}}}
on main, app.checkState is nil when exporting:
3:06PM INF app.checkState <nil>
Notably, both main and v1.x have app.checkState populated after init chain and on each block height so it seems like something on main has made app.checkState even more volatile in that it gets dropped when the node stops.
I have a suspicion that https://github.com/celestiaorg/celestia-app/commit/9db2f8b8bffe3dd1dd4eaf7d9b1d38afb71a193a is related because the app no longer uses loadLatest
anymore. See https://github.com/celestiaorg/celestia-app/blame/main/cmd/celestia-appd/cmd/root.go#L265 which previously called baseApp.Init
which calls app.setCheckState
.
LoadLatestVersion()
invocation here: if err := app.LoadLatestVersion(); err != nil {
panic(fmt.Sprintf("loading latest version: %s", err.Error()))
}
then we get another nil pointer because the modules haven't been initialized in the versioned module manager 😞
Found one bug in the module manager where it attempts to export modules that aren't in the currently supported app version. This results in a panic when invoking ExportGenesis
on the unsupported module.
Problem
On a v1.x node (specifically v1.8.0): I run
single-node.sh
for two blocks and then export:On main, the same actions result in a panic.