panic: runtime error: invalid memory address or nil pointer dereference when running Blockchainr
panic: runtime error: invalid memory address or nil pointer dereference when running Blockchainr
我运行 blockchain 并得到以下终端输出:
17:39:57 2015-06-16 [INF] loading db leveldb
panic: runtime error: invalid memory address or nil pointer dereference
panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xb code=0x1 addr=0x0 pc=0x402cb63]
goroutine 1 [running]:
main.search(0x4911ef8, 0xc20806e2d0, 0x0, 0x0, 0x4911ef8)
/Users/mesquka/Downloads/blockchainr-master/src/blockchainr/main.go:185 +0x3fa
main.main()
/Users/mesquka/Downloads/blockchainr-master/src/blockchainr/main.go:284 +0x3ce
goroutine 5 [semacquire]:
sync.(*Cond).Wait(0xc208045100)
/usr/local/go/src/sync/cond.go:62 +0x9e
github.com/conformal/seelog.(*asyncLoopLogger).processItem(0xc20802c4e0, 0x0)
/Users/mesquka/Downloads/blockchainr-master/src/github.com/conformal/seelog/behavior_asynclooplogger.go:50 +0xc2
github.com/conformal/seelog.(*asyncLoopLogger).processQueue(0xc20802c4e0)
/Users/mesquka/Downloads/blockchainr-master/src/github.com/conformal/seelog/behavior_asynclooplogger.go:63 +0x31
created by github.com/conformal/seelog.newAsyncLoopLogger
/Users/mesquka/Downloads/blockchainr-master/src/github.com/conformal/seelog/behavior_asynclooplogger.go:40 +0x8e
goroutine 6 [semacquire]:
sync.(*Cond).Wait(0xc2080452c0)
/usr/local/go/src/sync/cond.go:62 +0x9e
github.com/conformal/seelog.(*asyncLoopLogger).processItem(0xc20802c5a0, 0x0)
/Users/mesquka/Downloads/blockchainr-master/src/github.com/conformal/seelog/behavior_asynclooplogger.go:50 +0xc2
github.com/conformal/seelog.(*asyncLoopLogger).processQueue(0xc20802c5a0)
/Users/mesquka/Downloads/blockchainr-master/src/github.com/conformal/seelog/behavior_asynclooplogger.go:63 +0x31
created by github.com/conformal/seelog.newAsyncLoopLogger
/Users/mesquka/Downloads/blockchainr-master/src/github.com/conformal/seelog/behavior_asynclooplogger.go:40 +0x8e
goroutine 7 [syscall]:
os/signal.loop()
/usr/local/go/src/os/signal/signal_unix.go:21 +0x1f
created by os/signal.init·1
/usr/local/go/src/os/signal/signal_unix.go:27 +0x35
goroutine 17 [syscall, locked to thread]:
runtime.goexit()
/usr/local/go/src/runtime/asm_amd64.s:2232 +0x1
goroutine 8 [chan receive]:
github.com/conformal/seelog.(*asyncAdaptiveLogger).processQueue(0xc208010150)
/Users/mesquka/Downloads/blockchainr-master/src/github.com/conformal/seelog/behavior_adaptivelogger.go:127 +0x89
created by github.com/conformal/seelog.newAsyncAdaptiveLogger
/Users/mesquka/Downloads/blockchainr-master/src/github.com/conformal/seelog/behavior_adaptivelogger.go:84 +0x6ba
我 运行正在 OSX Yosemite 10.10.3 上使用 go 版本 go1.4.2 darwin/amd64
密码在https://github.com/FiloSottile/blockchainr
我运行(按顺序)的具体命令是:
- 全部
- ./bin/btcd --datadir=~/Btcd/
- ./bin/blockchainr -datadir ~/Btcd/
最后一个命令是我得到这个终端输出的地方。
您的问题在于 Blockchainr main.go 以下几行:
var (
dataDir = flag.String("datadir", filepath.Join(btcutil.AppDataDir("btcd", false), "data"), "BTCD: Data directory")
dbType = flag.String("dbtype", "leveldb", "BTCD: Database backend")
)
如您所见,如果您不指定 dbtype
标志,它默认为 "leveldb"
,因此它期望 datadir
参数包含 LevelDB 数据库的路径。
我运行 blockchain 并得到以下终端输出:
17:39:57 2015-06-16 [INF] loading db leveldb
panic: runtime error: invalid memory address or nil pointer dereference
panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xb code=0x1 addr=0x0 pc=0x402cb63]
goroutine 1 [running]:
main.search(0x4911ef8, 0xc20806e2d0, 0x0, 0x0, 0x4911ef8)
/Users/mesquka/Downloads/blockchainr-master/src/blockchainr/main.go:185 +0x3fa
main.main()
/Users/mesquka/Downloads/blockchainr-master/src/blockchainr/main.go:284 +0x3ce
goroutine 5 [semacquire]:
sync.(*Cond).Wait(0xc208045100)
/usr/local/go/src/sync/cond.go:62 +0x9e
github.com/conformal/seelog.(*asyncLoopLogger).processItem(0xc20802c4e0, 0x0)
/Users/mesquka/Downloads/blockchainr-master/src/github.com/conformal/seelog/behavior_asynclooplogger.go:50 +0xc2
github.com/conformal/seelog.(*asyncLoopLogger).processQueue(0xc20802c4e0)
/Users/mesquka/Downloads/blockchainr-master/src/github.com/conformal/seelog/behavior_asynclooplogger.go:63 +0x31
created by github.com/conformal/seelog.newAsyncLoopLogger
/Users/mesquka/Downloads/blockchainr-master/src/github.com/conformal/seelog/behavior_asynclooplogger.go:40 +0x8e
goroutine 6 [semacquire]:
sync.(*Cond).Wait(0xc2080452c0)
/usr/local/go/src/sync/cond.go:62 +0x9e
github.com/conformal/seelog.(*asyncLoopLogger).processItem(0xc20802c5a0, 0x0)
/Users/mesquka/Downloads/blockchainr-master/src/github.com/conformal/seelog/behavior_asynclooplogger.go:50 +0xc2
github.com/conformal/seelog.(*asyncLoopLogger).processQueue(0xc20802c5a0)
/Users/mesquka/Downloads/blockchainr-master/src/github.com/conformal/seelog/behavior_asynclooplogger.go:63 +0x31
created by github.com/conformal/seelog.newAsyncLoopLogger
/Users/mesquka/Downloads/blockchainr-master/src/github.com/conformal/seelog/behavior_asynclooplogger.go:40 +0x8e
goroutine 7 [syscall]:
os/signal.loop()
/usr/local/go/src/os/signal/signal_unix.go:21 +0x1f
created by os/signal.init·1
/usr/local/go/src/os/signal/signal_unix.go:27 +0x35
goroutine 17 [syscall, locked to thread]:
runtime.goexit()
/usr/local/go/src/runtime/asm_amd64.s:2232 +0x1
goroutine 8 [chan receive]:
github.com/conformal/seelog.(*asyncAdaptiveLogger).processQueue(0xc208010150)
/Users/mesquka/Downloads/blockchainr-master/src/github.com/conformal/seelog/behavior_adaptivelogger.go:127 +0x89
created by github.com/conformal/seelog.newAsyncAdaptiveLogger
/Users/mesquka/Downloads/blockchainr-master/src/github.com/conformal/seelog/behavior_adaptivelogger.go:84 +0x6ba
我 运行正在 OSX Yosemite 10.10.3 上使用 go 版本 go1.4.2 darwin/amd64
密码在https://github.com/FiloSottile/blockchainr
我运行(按顺序)的具体命令是:
- 全部
- ./bin/btcd --datadir=~/Btcd/
- ./bin/blockchainr -datadir ~/Btcd/
最后一个命令是我得到这个终端输出的地方。
您的问题在于 Blockchainr main.go 以下几行:
var (
dataDir = flag.String("datadir", filepath.Join(btcutil.AppDataDir("btcd", false), "data"), "BTCD: Data directory")
dbType = flag.String("dbtype", "leveldb", "BTCD: Database backend")
)
如您所见,如果您不指定 dbtype
标志,它默认为 "leveldb"
,因此它期望 datadir
参数包含 LevelDB 数据库的路径。