OpenBazaar / openbazaar-go

OpenBazaar 2.0 Server Daemon in Go
MIT License
991 stars 284 forks source link

OB-go daemon inconsistently crashes on directed messages sent via an IPFS-js node #1641

Open rmisio opened 5 years ago

rmisio commented 5 years ago

So using libp2p-js, I'll send a direct message to OB-go and it will crash with such an error:

18: 1c349093319ba4d878cd867c86fd3fd7df3d426814227636c6971764153cbc0d
panic: inconsistent lengths

goroutine 21035 [running]:
github.com/OpenBazaar/openbazaar-go/vendor/gx/ipfs/QmTZBfrPJmjWsCvHEtX5FE6KimVJhsJg5sBbqEFYf4UZtL/go-multiaddr.(*Component).Value(0xc0002fae70, 0x55143b9, 0x4)
    /Users/rob/develop/openbazaar/v2/go/src/github.com/OpenBazaar/openbazaar-go/vendor/gx/ipfs/QmTZBfrPJmjWsCvHEtX5FE6KimVJhsJg5sBbqEFYf4UZtL/go-multiaddr/component.go:112 +0xcc
github.com/OpenBazaar/openbazaar-go/vendor/gx/ipfs/QmTZBfrPJmjWsCvHEtX5FE6KimVJhsJg5sBbqEFYf4UZtL/go-multiaddr.(*Component).writeTo(0xc0002fae70, 0xc001ed3a70)
    /Users/rob/develop/openbazaar/v2/go/src/github.com/OpenBazaar/openbazaar-go/vendor/gx/ipfs/QmTZBfrPJmjWsCvHEtX5FE6KimVJhsJg5sBbqEFYf4UZtL/go-multiaddr/component.go:128 +0x128
github.com/OpenBazaar/openbazaar-go/vendor/gx/ipfs/QmTZBfrPJmjWsCvHEtX5FE6KimVJhsJg5sBbqEFYf4UZtL/go-multiaddr.(*Component).String(0xc0002fae70, 0xc002a30b80, 0xc002b26700)
    /Users/rob/develop/openbazaar/v2/go/src/github.com/OpenBazaar/openbazaar-go/vendor/gx/ipfs/QmTZBfrPJmjWsCvHEtX5FE6KimVJhsJg5sBbqEFYf4UZtL/go-multiaddr/component.go:119 +0x42
github.com/OpenBazaar/openbazaar-go/vendor/gx/ipfs/QmRxk6AUaGaKCfzS1xSNRojiAPd7h2ih8GuCdjJBF3Y6GK/go-libp2p/p2p/protocol/identify.observerGroup(0x59bc520, 0xc002a30b80, 0x6901860, 0x1a5)
    /Users/rob/develop/openbazaar/v2/go/src/github.com/OpenBazaar/openbazaar-go/vendor/gx/ipfs/QmRxk6AUaGaKCfzS1xSNRojiAPd7h2ih8GuCdjJBF3Y6GK/go-libp2p/p2p/protocol/identify/obsaddr.go:132 +0x53
github.com/OpenBazaar/openbazaar-go/vendor/gx/ipfs/QmRxk6AUaGaKCfzS1xSNRojiAPd7h2ih8GuCdjJBF3Y6GK/go-libp2p/p2p/protocol/identify.(*ObservedAddrSet).Add(0xc00025a3f8, 0x59bc520, 0xc002f77ce0, 0x59bc520, 0xc002ae80c0, 0x59bc520, 0xc002a30b80, 0x1)
    /Users/rob/develop/openbazaar/v2/go/src/github.com/OpenBazaar/openbazaar-go/vendor/gx/ipfs/QmRxk6AUaGaKCfzS1xSNRojiAPd7h2ih8GuCdjJBF3Y6GK/go-libp2p/p2p/protocol/identify/obsaddr.go:94 +0xc5
github.com/OpenBazaar/openbazaar-go/vendor/gx/ipfs/QmRxk6AUaGaKCfzS1xSNRojiAPd7h2ih8GuCdjJBF3Y6GK/go-libp2p/p2p/protocol/identify.(*IDService).consumeObservedAddress(0xc00025a3c0, 0x6aa4958, 0x0, 0x0, 0x59b8820, 0xc003b22480)
    /Users/rob/develop/openbazaar/v2/go/src/github.com/OpenBazaar/openbazaar-go/vendor/gx/ipfs/QmRxk6AUaGaKCfzS1xSNRojiAPd7h2ih8GuCdjJBF3Y6GK/go-libp2p/p2p/protocol/identify/id.go:419 +0x619
github.com/OpenBazaar/openbazaar-go/vendor/gx/ipfs/QmRxk6AUaGaKCfzS1xSNRojiAPd7h2ih8GuCdjJBF3Y6GK/go-libp2p/p2p/protocol/identify.(*IDService).consumeMessage(0xc00025a3c0, 0xc003b65b90, 0x59b8820, 0xc003b22480)
    /Users/rob/develop/openbazaar/v2/go/src/github.com/OpenBazaar/openbazaar-go/vendor/gx/ipfs/QmRxk6AUaGaKCfzS1xSNRojiAPd7h2ih8GuCdjJBF3Y6GK/go-libp2p/p2p/protocol/identify/id.go:222 +0x124
github.com/OpenBazaar/openbazaar-go/vendor/gx/ipfs/QmRxk6AUaGaKCfzS1xSNRojiAPd7h2ih8GuCdjJBF3Y6GK/go-libp2p/p2p/protocol/identify.(*IDService).responseHandler(0xc00025a3c0, 0x59ba0a0, 0xc00134a140)
    /Users/rob/develop/openbazaar/v2/go/src/github.com/OpenBazaar/openbazaar-go/vendor/gx/ipfs/QmRxk6AUaGaKCfzS1xSNRojiAPd7h2ih8GuCdjJBF3Y6GK/go-libp2p/p2p/protocol/identify/id.go:139 +0x22c
github.com/OpenBazaar/openbazaar-go/vendor/gx/ipfs/QmRxk6AUaGaKCfzS1xSNRojiAPd7h2ih8GuCdjJBF3Y6GK/go-libp2p/p2p/protocol/identify.(*IDService).IdentifyConn(0xc00025a3c0, 0x59b8820, 0xc003b22480)
    /Users/rob/develop/openbazaar/v2/go/src/github.com/OpenBazaar/openbazaar-go/vendor/gx/ipfs/QmRxk6AUaGaKCfzS1xSNRojiAPd7h2ih8GuCdjJBF3Y6GK/go-libp2p/p2p/protocol/identify/id.go:113 +0x7a9
github.com/OpenBazaar/openbazaar-go/vendor/gx/ipfs/QmRxk6AUaGaKCfzS1xSNRojiAPd7h2ih8GuCdjJBF3Y6GK/go-libp2p/p2p/host/basic.(*BasicHost).newConnHandler(0xc0000267e0, 0x59b8820, 0xc003b22480)
    /Users/rob/develop/openbazaar/v2/go/src/github.com/OpenBazaar/openbazaar-go/vendor/gx/ipfs/QmRxk6AUaGaKCfzS1xSNRojiAPd7h2ih8GuCdjJBF3Y6GK/go-libp2p/p2p/host/basic/basic_host.go:209 +0xa5
github.com/OpenBazaar/openbazaar-go/vendor/gx/ipfs/QmRxk6AUaGaKCfzS1xSNRojiAPd7h2ih8GuCdjJBF3Y6GK/go-libp2p/p2p/host/basic.(*BasicHost).newConnHandler-fm(0x59b8820, 0xc003b22480)
    /Users/rob/develop/openbazaar/v2/go/src/github.com/OpenBazaar/openbazaar-go/vendor/gx/ipfs/QmRxk6AUaGaKCfzS1xSNRojiAPd7h2ih8GuCdjJBF3Y6GK/go-libp2p/p2p/host/basic/basic_host.go:162 +0x3e
created by github.com/OpenBazaar/openbazaar-go/vendor/gx/ipfs/Qma3Xp3FXFSP4prirEiRYHJ2tgGE8EAx9i6JLziPLpAQjq/go-libp2p-swarm.(*Swarm).addConn
    /Users/rob/develop/openbazaar/v2/go/src/github.com/OpenBazaar/openbazaar-go/vendor/gx/ipfs/Qma3Xp3FXFSP4prirEiRYHJ2tgGE8EAx9i6JLziPLpAQjq/go-libp2p-swarm/swarm.go:231 +0x38e
exit status 2

After the crash, I'll restart the ob-go node and send the exact same message and it goes through without issue.

Here's an example of a message that caused this behavior:

630801125f0a18747970652e676f6f676c65617069732e636f6d2f4368617412430a2e516d646759616a506753667239373331366869444735533554694e6e4a45475a37466b4a3170613161386b69626512001a036d6f6f220808bbc88fe805104c2800

If there's any more info I could provide, please let me know.

rmisio commented 5 years ago

Actually, I think this must be something related to the transport protocol, because I just saw it happen on an out-going message from ob-go:

12:53:10.715 [DEBUG] [service/SendMessage] Sending CHAT message to QmREZaCgE9JwiEqBN4E3cNiFH1o2YctwiAbUcDGuyNh96o
panic: inconsistent lengths

goroutine 36993 [running]:
github.com/OpenBazaar/openbazaar-go/vendor/gx/ipfs/QmTZBfrPJmjWsCvHEtX5FE6KimVJhsJg5sBbqEFYf4UZtL/go-multiaddr.(*Component).Value(0xc000c89650, 0x55143b9, 0x4)
    /Users/rob/develop/openbazaar/v2/go/src/github.com/OpenBazaar/openbazaar-go/vendor/gx/ipfs/QmTZBfrPJmjWsCvHEtX5FE6KimVJhsJg5sBbqEFYf4UZtL/go-multiaddr/component.go:112 +0xcc
github.com/OpenBazaar/openbazaar-go/vendor/gx/ipfs/QmTZBfrPJmjWsCvHEtX5FE6KimVJhsJg5sBbqEFYf4UZtL/go-multiaddr.(*Component).writeTo(0xc000c89650, 0xc0025b9a70)
    /Users/rob/develop/openbazaar/v2/go/src/github.com/OpenBazaar/openbazaar-go/vendor/gx/ipfs/QmTZBfrPJmjWsCvHEtX5FE6KimVJhsJg5sBbqEFYf4UZtL/go-multiaddr/component.go:128 +0x128
github.com/OpenBazaar/openbazaar-go/vendor/gx/ipfs/QmTZBfrPJmjWsCvHEtX5FE6KimVJhsJg5sBbqEFYf4UZtL/go-multiaddr.(*Component).String(0xc000c89650, 0xc0028a89e0, 0xc001915720)
    /Users/rob/develop/openbazaar/v2/go/src/github.com/OpenBazaar/openbazaar-go/vendor/gx/ipfs/QmTZBfrPJmjWsCvHEtX5FE6KimVJhsJg5sBbqEFYf4UZtL/go-multiaddr/component.go:119 +0x42
github.com/OpenBazaar/openbazaar-go/vendor/gx/ipfs/QmRxk6AUaGaKCfzS1xSNRojiAPd7h2ih8GuCdjJBF3Y6GK/go-libp2p/p2p/protocol/identify.observerGroup(0x59bc520, 0xc0028a89e0, 0x6901860, 0x1a5)
    /Users/rob/develop/openbazaar/v2/go/src/github.com/OpenBazaar/openbazaar-go/vendor/gx/ipfs/QmRxk6AUaGaKCfzS1xSNRojiAPd7h2ih8GuCdjJBF3Y6GK/go-libp2p/p2p/protocol/identify/obsaddr.go:132 +0x53
github.com/OpenBazaar/openbazaar-go/vendor/gx/ipfs/QmRxk6AUaGaKCfzS1xSNRojiAPd7h2ih8GuCdjJBF3Y6GK/go-libp2p/p2p/protocol/identify.(*ObservedAddrSet).Add(0xc0007344e8, 0x59bc520, 0xc0028a8160, 0x59bc520, 0xc001463bc0, 0x59bc520, 0xc0028a89e0, 0x2)
    /Users/rob/develop/openbazaar/v2/go/src/github.com/OpenBazaar/openbazaar-go/vendor/gx/ipfs/QmRxk6AUaGaKCfzS1xSNRojiAPd7h2ih8GuCdjJBF3Y6GK/go-libp2p/p2p/protocol/identify/obsaddr.go:94 +0xc5
github.com/OpenBazaar/openbazaar-go/vendor/gx/ipfs/QmRxk6AUaGaKCfzS1xSNRojiAPd7h2ih8GuCdjJBF3Y6GK/go-libp2p/p2p/protocol/identify.(*IDService).consumeObservedAddress(0xc0007344b0, 0x6aa4958, 0x0, 0x0, 0x59b8820, 0xc002b68000)
    /Users/rob/develop/openbazaar/v2/go/src/github.com/OpenBazaar/openbazaar-go/vendor/gx/ipfs/QmRxk6AUaGaKCfzS1xSNRojiAPd7h2ih8GuCdjJBF3Y6GK/go-libp2p/p2p/protocol/identify/id.go:419 +0x619
github.com/OpenBazaar/openbazaar-go/vendor/gx/ipfs/QmRxk6AUaGaKCfzS1xSNRojiAPd7h2ih8GuCdjJBF3Y6GK/go-libp2p/p2p/protocol/identify.(*IDService).consumeMessage(0xc0007344b0, 0xc0024ed440, 0x59b8820, 0xc002b68000)
    /Users/rob/develop/openbazaar/v2/go/src/github.com/OpenBazaar/openbazaar-go/vendor/gx/ipfs/QmRxk6AUaGaKCfzS1xSNRojiAPd7h2ih8GuCdjJBF3Y6GK/go-libp2p/p2p/protocol/identify/id.go:222 +0x124
github.com/OpenBazaar/openbazaar-go/vendor/gx/ipfs/QmRxk6AUaGaKCfzS1xSNRojiAPd7h2ih8GuCdjJBF3Y6GK/go-libp2p/p2p/protocol/identify.(*IDService).responseHandler(0xc0007344b0, 0x59ba0a0, 0xc000522690)
    /Users/rob/develop/openbazaar/v2/go/src/github.com/OpenBazaar/openbazaar-go/vendor/gx/ipfs/QmRxk6AUaGaKCfzS1xSNRojiAPd7h2ih8GuCdjJBF3Y6GK/go-libp2p/p2p/protocol/identify/id.go:139 +0x22c
github.com/OpenBazaar/openbazaar-go/vendor/gx/ipfs/QmRxk6AUaGaKCfzS1xSNRojiAPd7h2ih8GuCdjJBF3Y6GK/go-libp2p/p2p/protocol/identify.(*IDService).IdentifyConn(0xc0007344b0, 0x59b8820, 0xc002b68000)
    /Users/rob/develop/openbazaar/v2/go/src/github.com/OpenBazaar/openbazaar-go/vendor/gx/ipfs/QmRxk6AUaGaKCfzS1xSNRojiAPd7h2ih8GuCdjJBF3Y6GK/go-libp2p/p2p/protocol/identify/id.go:113 +0x7a9
github.com/OpenBazaar/openbazaar-go/vendor/gx/ipfs/QmRxk6AUaGaKCfzS1xSNRojiAPd7h2ih8GuCdjJBF3Y6GK/go-libp2p/p2p/host/basic.(*BasicHost).newConnHandler(0xc000026850, 0x59b8820, 0xc002b68000)
    /Users/rob/develop/openbazaar/v2/go/src/github.com/OpenBazaar/openbazaar-go/vendor/gx/ipfs/QmRxk6AUaGaKCfzS1xSNRojiAPd7h2ih8GuCdjJBF3Y6GK/go-libp2p/p2p/host/basic/basic_host.go:209 +0xa5
github.com/OpenBazaar/openbazaar-go/vendor/gx/ipfs/QmRxk6AUaGaKCfzS1xSNRojiAPd7h2ih8GuCdjJBF3Y6GK/go-libp2p/p2p/host/basic.(*BasicHost).newConnHandler-fm(0x59b8820, 0xc002b68000)
    /Users/rob/develop/openbazaar/v2/go/src/github.com/OpenBazaar/openbazaar-go/vendor/gx/ipfs/QmRxk6AUaGaKCfzS1xSNRojiAPd7h2ih8GuCdjJBF3Y6GK/go-libp2p/p2p/host/basic/basic_host.go:162 +0x3e
created by github.com/OpenBazaar/openbazaar-go/vendor/gx/ipfs/Qma3Xp3FXFSP4prirEiRYHJ2tgGE8EAx9i6JLziPLpAQjq/go-libp2p-swarm.(*Swarm).addConn
    /Users/rob/develop/openbazaar/v2/go/src/github.com/OpenBazaar/openbazaar-go/vendor/gx/ipfs/Qma3Xp3FXFSP4prirEiRYHJ2tgGE8EAx9i6JLziPLpAQjq/go-libp2p-swarm/swarm.go:231 +0x38e
exit status 2