TritonDataCenter / node-sshpk-agent

ssh-agent library for use with sshpk
MIT License
7 stars 5 forks source link

unexpected AgentProtocolError exception #3

Open davepacheco opened 8 years ago

davepacheco commented 8 years ago

I had a program run into this uncaught exception:

events.js:72
        throw er; // Unhandled 'error' event
              ^
AgentProtocolError: Data received from SSH agent could not be decoded: Out of order frame received: identities-answer
    at AgentDecodeStream.<anonymous> (/home/dap/manta-marlin/build/proto/root/opt/smartdc/marlin/node_modules/manta/node_modules/smartdc-auth/node_modules/sshpk-agent/lib/client.js:475:24)
    at AgentDecodeStream.emit (events.js:92:17)
    at emitReadable_ (/home/dap/manta-marlin/build/proto/root/opt/smartdc/marlin/node_modules/manta/node_modules/smartdc-auth/node_modules/sshpk-agent/node_modules/readable-stream/lib/_stream_readable.js:464:10)
    at emitReadable (/home/dap/manta-marlin/build/proto/root/opt/smartdc/marlin/node_modules/manta/node_modules/smartdc-auth/node_modules/sshpk-agent/node_modules/readable-stream/lib/_stream_readable.js:458:7)
    at readableAddChunk (/home/dap/manta-marlin/build/proto/root/opt/smartdc/marlin/node_modules/manta/node_modules/smartdc-auth/node_modules/sshpk-agent/node_modules/readable-stream/lib/_stream_readable.js:210:11)
    at AgentDecodeStream.Readable.push (/home/dap/manta-marlin/build/proto/root/opt/smartdc/marlin/node_modules/manta/node_modules/smartdc-auth/node_modules/sshpk-agent/node_modules/readable-stream/lib/_stream_readable.js:163:10)
    at AgentDecodeStream.Transform.push (/home/dap/manta-marlin/build/proto/root/opt/smartdc/marlin/node_modules/manta/node_modules/smartdc-auth/node_modules/sshpk-agent/node_modules/readable-stream/lib/_stream_transform.js:133:32)
    at AgentDecodeStream._transform (/home/dap/manta-marlin/build/proto/root/opt/smartdc/marlin/node_modules/manta/node_modules/smartdc-auth/node_modules/sshpk-agent/lib/protocol-streams.js:216:9)
    at AgentDecodeStream.Transform._read (/home/dap/manta-marlin/build/proto/root/opt/smartdc/marlin/node_modules/manta/node_modules/smartdc-auth/node_modules/sshpk-agent/node_modules/readable-stream/lib/_stream_transform.js:172:10)
    at AgentDecodeStream.Transform._write (/home/dap/manta-marlin/build/proto/root/opt/smartdc/marlin/node_modules/manta/node_modules/smartdc-auth/node_modules/sshpk-agent/node_modules/readable-stream/lib/_stream_transform.js:160:12)

I only saw it once, despite a few tries. I'm using Node v0.10.32, and here's the whole "npm ls" output:

marlin@0.0.3 /home/dap/manta-marlin/build/proto/root/opt/smartdc/marlin
├── aperture-config@1.0.0 (git+ssh://git@github.com:joyent/aperture-config.git#82560607fcb516ebaee82709f532c12bcb4db09d)
├── assert-plus@0.1.2
├─┬ bunyan@0.20.0
│ └── mv@0.0.5
├─┬ catstreams@0.5.0
│ ├── readable-stream@1.0.2
│ ├── vasync@1.6.3
│ └─┬ verror@1.6.0
│   └── extsprintf@1.2.0
├── dtrace-provider@0.2.8
├── extsprintf@1.3.0
├─┬ fuzzstream@0.0.1
│ └── readable-stream@1.0.2
├─┬ httpstream@0.1.1
│ ├── readable-stream@1.0.2
│ └─┬ verror@1.6.0
│   └── extsprintf@1.2.0
├── hyprlofs@0.0.3
├─┬ illumos_contract@1.0.1
│ └─┬ v8plus@0.2.1
│   └── posix-getopt@0.0.1
├─┬ jsprim@0.5.0
│ ├── extsprintf@1.0.2
│ ├── json-schema@0.2.2
│ └── verror@1.3.6
├─┬ kang@0.0.5
│ ├─┬ jsprim@0.4.0
│ │ ├── extsprintf@1.0.0
│ │ ├── json-schema@0.2.2
│ │ └── verror@1.3.3
│ ├── posix-getopt@0.0.1
│ ├─┬ restify@2.3.3
│ │ ├── backoff@2.0.0
│ │ ├─┬ bunyan@0.18.3
│ │ │ └── mv@0.0.4
│ │ ├── deep-equal@0.0.0
│ │ ├── formidable@1.0.11
│ │ ├─┬ http-signature@0.9.11
│ │ │ ├── asn1@0.1.11
│ │ │ └── ctype@0.5.2
│ │ ├── keep-alive-agent@0.0.1
│ │ ├── lru-cache@2.2.2
│ │ ├── mime@1.2.9
│ │ ├── negotiator@0.2.5
│ │ ├── once@1.1.1
│ │ ├── qs@0.5.3
│ │ ├── semver@1.1.2
│ │ ├── spdy@1.4.3
│ │ └─┬ verror@1.3.5
│ │   └── extsprintf@1.0.0
│ └─┬ vasync@1.3.3
│   ├─┬ jsprim@0.3.0
│   │ ├── extsprintf@1.0.0
│   │ ├── json-schema@0.2.2
│   │ └── verror@1.3.3
│   └─┬ verror@1.1.0
│     └── extsprintf@1.0.0
├── kstat@0.5.0
├─┬ libmanta@1.0.0 (git+ssh://git@github.com:joyent/node-libmanta.git#39389b73986b57f18dbee546ea723de2dd90c9b4)
│ ├── assert-plus@0.1.5
│ ├── backoff@2.3.0
│ ├─┬ bunyan@0.22.1
│ │ └── mv@0.0.5
│ ├── lru-cache@2.3.1
│ ├─┬ moray@1.0.0 (git+ssh://git@github.com:joyent/node-moray.git#b8e1defd349de40cc4c33502f8b13da73c513a91)
│ │ ├─┬ backoff@2.4.0
│ │ │ └── precond@0.2.3
│ │ ├─┬ bunyan@1.5.1
│ │ │ ├─┬ dtrace-provider@0.6.0
│ │ │ │ └── nan@2.1.0
│ │ │ ├─┬ mv@2.1.1
│ │ │ │ ├─┬ mkdirp@0.5.1
│ │ │ │ │ └── minimist@0.0.8
│ │ │ │ ├── ncp@2.0.0
│ │ │ │ └─┬ rimraf@2.4.3
│ │ │ │   └─┬ glob@5.0.15
│ │ │ │     ├─┬ inflight@1.0.4
│ │ │ │     │ └── wrappy@1.0.1
│ │ │ │     ├── inherits@2.0.1
│ │ │ │     ├─┬ minimatch@3.0.0
│ │ │ │     │ └─┬ brace-expansion@1.1.1
│ │ │ │     │   ├── balanced-match@0.2.1
│ │ │ │     │   └── concat-map@0.0.1
│ │ │ │     └── path-is-absolute@1.0.0
│ │ │ └── safe-json-stringify@1.0.3
│ │ ├── clone@0.1.18
│ │ ├─┬ fast@0.3.10 (git+ssh://git@github.com/mcavage/node-fast.git#806645590ce3ef01ff698ffc5ee4f420cbadfae4)
│ │ │ ├── crc@0.2.1
│ │ │ ├─┬ microtime@0.5.1
│ │ │ │ ├── bindings@1.1.1
│ │ │ │ └── nan@0.6.0
│ │ │ ├─┬ readable-stream@1.1.10
│ │ │ │ ├── core-util-is@1.0.1
│ │ │ │ ├── debuglog@0.0.2
│ │ │ │ └── string_decoder@0.10.31
│ │ │ └─┬ verror@1.3.6
│ │ │   └── extsprintf@1.0.2
│ │ ├─┬ libuuid@0.1.4
│ │ │ └── nan@1.8.4
│ │ ├─┬ native-dns@0.4.1
│ │ │ ├── binaryheap@0.0.3
│ │ │ ├── buffercursor@0.0.12
│ │ │ └── ipaddr.js@1.0.4
│ │ └─┬ progbar@0.1.0
│ │   └── sprintf@0.1.5
│ ├── once@1.3.0
│ ├── redis@0.10.1
│ ├─┬ restify@2.6.3
│ │ ├── csv@0.3.7
│ │ ├── deep-equal@0.0.0
│ │ ├── escape-regexp-component@1.0.2
│ │ ├── formidable@1.0.14
│ │ ├─┬ http-signature@0.10.0
│ │ │ ├── asn1@0.1.11
│ │ │ ├── assert-plus@0.1.2
│ │ │ └── ctype@0.5.2
│ │ ├── keep-alive-agent@0.0.1
│ │ ├── mime@1.2.11
│ │ ├── negotiator@0.3.0
│ │ ├── node-uuid@1.4.1
│ │ ├── qs@0.6.6
│ │ ├── semver@2.2.1
│ │ ├── spdy@1.19.3
│ │ ├── tunnel-agent@0.4.0
│ │ └─┬ verror@1.3.7
│ │   └── extsprintf@1.0.2
│ ├── vasync@1.6.3
│ ├─┬ verror@1.6.0
│ │ └── extsprintf@1.2.0
│ └─┬ xtend@2.1.2
│   └── object-keys@0.4.0
├─┬ lstream@0.0.3
│ └─┬ readable-stream@2.0.4
│   ├── core-util-is@1.0.1
│   ├── inherits@2.0.1
│   ├── isarray@0.0.1
│   ├── process-nextick-args@1.0.3
│   ├── string_decoder@0.10.31
│   └── util-deprecate@1.0.2
├─┬ mahi@2.0.0 (git+ssh://git@github.com:joyent/node-mahi.git#38efe35bf5b9abe75dee385ac14f13280dbca3d5)
│ ├─┬ aperture@0.0.2 (git+ssh://git@github.com:joyent/node-aperture.git#016977f02142eedcd6a0d3fefaed071dd1fe71ba)
│ │ ├── assert-plus@0.2.0 (git://github.com/mcavage/node-assert-plus.git#b5794c3197f2a4df9d8ef6ad04a34149ac0e5403)
│ │ ├─┬ ipaddr.js@0.1.1
│ │ │ └── coffee-script@1.10.0
│ │ ├─┬ jsprim@0.5.1
│ │ │ ├── extsprintf@1.0.2
│ │ │ └── json-schema@0.2.2
│ │ ├── moment@2.3.1
│ │ └─┬ verror@1.3.6
│ │   └── extsprintf@1.0.2
│ ├── assert-plus@0.1.5
│ ├─┬ bunyan@0.22.1
│ │ └── mv@0.0.5
│ ├─┬ http-signature@0.10.0
│ │ ├── asn1@0.1.11
│ │ ├── assert-plus@0.1.2
│ │ └── ctype@0.5.2
│ ├── lru-cache@2.5.0
│ ├─┬ restify@2.6.1
│ │ ├── assert-plus@0.1.4
│ │ ├── backoff@2.3.0
│ │ ├─┬ bunyan@0.22.0
│ │ │ └── mv@0.0.5
│ │ ├── csv@0.3.6
│ │ ├── deep-equal@0.0.0
│ │ ├── escape-regexp-component@1.0.2
│ │ ├── formidable@1.0.14
│ │ ├── keep-alive-agent@0.0.1
│ │ ├── lru-cache@2.3.1
│ │ ├── mime@1.2.11
│ │ ├── negotiator@0.3.0
│ │ ├── once@1.3.0
│ │ ├── qs@0.6.5
│ │ ├── semver@2.2.1
│ │ ├── spdy@1.14.12
│ │ ├── tunnel-agent@0.3.0
│ │ └─┬ verror@1.3.6
│ │   └── extsprintf@1.0.2
│ └─┬ verror@1.3.7
│   └── extsprintf@1.0.2
├─┬ manta@2.0.2 (git+ssh://git@github.com:joyent/node-manta.git#b73bd468735954baeb3d0b9127ee5c7588cb4fec)
│ ├── assert-plus@0.1.5
│ ├── backoff@2.3.0
│ ├─┬ bunyan@0.22.1
│ │ └── mv@0.0.5
│ ├── clone@0.1.11
│ ├─┬ cmdln@1.3.1
│ │ └── assert-plus@0.1.3
│ ├─┬ dashdash@1.3.2
│ │ └── assert-plus@0.1.2
│ ├── extsprintf@1.0.2
│ ├── hogan.js@2.0.0
│ ├─┬ http-signature@0.10.0
│ │ ├── asn1@0.1.11
│ │ ├── assert-plus@0.1.2
│ │ └── ctype@0.5.2
│ ├─┬ jsprim@0.8.0
│ │ └── json-schema@0.2.2
│ ├─┬ lomstream@1.1.0
│ │ ├── extsprintf@1.3.0
│ │ └─┬ vstream@0.1.0
│ │   └── extsprintf@1.2.0
│ ├── mime@1.2.11
│ ├── moment@2.4.0
│ ├── node-uuid@1.4.1
│ ├── once@1.3.0
│ ├── path-platform@0.0.1
│ ├─┬ progbar@1.0.0
│ │ ├─┬ readable-stream@1.0.33
│ │ │ ├── core-util-is@1.0.1
│ │ │ ├── inherits@2.0.1
│ │ │ ├── isarray@0.0.1
│ │ │ └── string_decoder@0.10.31
│ │ └── sprintf@0.1.5
│ ├─┬ readable-stream@1.1.9
│ │ ├── core-util-is@1.0.1
│ │ └── debuglog@0.0.2
│ ├─┬ restify@2.8.1
│ │ ├── csv@0.3.7
│ │ ├── deep-equal@0.0.0
│ │ ├── escape-regexp-component@1.0.2
│ │ ├── formidable@1.0.14
│ │ ├── keep-alive-agent@0.0.1
│ │ ├── lru-cache@2.3.1
│ │ ├── negotiator@0.3.0
│ │ ├── qs@0.6.6
│ │ ├── semver@2.2.1
│ │ ├── spdy@1.19.3
│ │ ├── tunnel-agent@0.4.0
│ │ └── verror@1.3.7
│ ├── showdown@0.3.1
│ ├─┬ smartdc-auth@2.1.5
│ │ ├── assert-plus@0.1.2
│ │ ├─┬ bunyan@1.3.4
│ │ │ ├─┬ dtrace-provider@0.4.0
│ │ │ │ └── nan@1.5.3
│ │ │ ├─┬ mv@2.1.1
│ │ │ │ ├─┬ mkdirp@0.5.1
│ │ │ │ │ └── minimist@0.0.8
│ │ │ │ ├── ncp@2.0.0
│ │ │ │ └─┬ rimraf@2.4.3
│ │ │ │   └─┬ glob@5.0.15
│ │ │ │     ├─┬ inflight@1.0.4
│ │ │ │     │ └── wrappy@1.0.1
│ │ │ │     ├── inherits@2.0.1
│ │ │ │     ├─┬ minimatch@3.0.0
│ │ │ │     │ └─┬ brace-expansion@1.1.1
│ │ │ │     │   ├── balanced-match@0.2.1
│ │ │ │     │   └── concat-map@0.0.1
│ │ │ │     └── path-is-absolute@1.0.0
│ │ │ └── safe-json-stringify@1.0.3
│ │ ├── clone@0.1.5
│ │ ├── dashdash@1.7.3
│ │ ├─┬ sshpk@1.4.4
│ │ │ ├── asn1@0.2.3
│ │ │ ├── assert-plus@0.1.5
│ │ │ ├── big-integer@1.6.7
│ │ │ └── dashdash@1.10.1
│ │ ├─┬ sshpk-agent@1.1.1
│ │ │ ├── assert-plus@0.1.5
│ │ │ └─┬ readable-stream@2.0.4
│ │ │   ├── core-util-is@1.0.1
│ │ │   ├── inherits@2.0.1
│ │ │   ├── isarray@0.0.1
│ │ │   ├── process-nextick-args@1.0.3
│ │ │   ├── string_decoder@0.10.31
│ │ │   └── util-deprecate@1.0.2
│ │ └─┬ vasync@1.4.3
│ │   ├─┬ jsprim@0.3.0
│ │   │ ├── extsprintf@1.0.0
│ │   │ ├── json-schema@0.2.2
│ │   │ └── verror@1.3.3
│ │   └─┬ verror@1.1.0
│ │     └── extsprintf@1.0.0
│ ├─┬ tar@0.1.18
│ │ ├── block-stream@0.0.8
│ │ ├─┬ fstream@0.1.31
│ │ │ ├── graceful-fs@3.0.8
│ │ │ ├─┬ mkdirp@0.5.1
│ │ │ │ └── minimist@0.0.8
│ │ │ └─┬ rimraf@2.4.3
│ │ │   └─┬ glob@5.0.15
│ │ │     ├─┬ inflight@1.0.4
│ │ │     │ └── wrappy@1.0.1
│ │ │     ├─┬ minimatch@3.0.0
│ │ │     │ └─┬ brace-expansion@1.1.1
│ │ │     │   ├── balanced-match@0.2.1
│ │ │     │   └── concat-map@0.0.1
│ │ │     └── path-is-absolute@1.0.0
│ │ └── inherits@2.0.1
│ ├─┬ vasync@1.4.0
│ │ ├─┬ jsprim@0.3.0
│ │ │ ├── extsprintf@1.0.0
│ │ │ ├── json-schema@0.2.2
│ │ │ └── verror@1.3.3
│ │ └─┬ verror@1.1.0
│ │   └── extsprintf@1.0.0
│ ├── verror@1.3.6
│ └─┬ watershed@0.3.0
│   └── readable-stream@1.0.2
├─┬ manta-compute-bin@1.0.0 (git+ssh://git@github.com:davepacheco/manta-compute-bin.git#2f30cf9ecf3a1e2f057a320a63671a9e9c385a5d)
│ ├─┬ lstream@0.0.4
│ │ └─┬ readable-stream@2.0.4
│ │   ├── core-util-is@1.0.1
│ │   ├── inherits@2.0.1
│ │   ├── isarray@0.0.1
│ │   ├── process-nextick-args@1.0.3
│ │   ├── string_decoder@0.10.31
│ │   └── util-deprecate@1.0.2
│ ├─┬ manta@2.0.2 (git+ssh://git@github.com:joyent/node-manta.git#b73bd468735954baeb3d0b9127ee5c7588cb4fec)
│ │ ├── assert-plus@0.1.5
│ │ ├── backoff@2.3.0
│ │ ├─┬ bunyan@0.22.1
│ │ │ └── mv@0.0.5
│ │ ├── clone@0.1.11
│ │ ├─┬ cmdln@1.3.1
│ │ │ └── assert-plus@0.1.3
│ │ ├─┬ dashdash@1.3.2
│ │ │ └── assert-plus@0.1.2
│ │ ├── extsprintf@1.0.2
│ │ ├── hogan.js@2.0.0
│ │ ├─┬ http-signature@0.10.0
│ │ │ ├── asn1@0.1.11
│ │ │ ├── assert-plus@0.1.2
│ │ │ └── ctype@0.5.2
│ │ ├─┬ jsprim@0.8.0
│ │ │ └── json-schema@0.2.2
│ │ ├─┬ lomstream@1.1.0
│ │ │ ├── extsprintf@1.3.0
│ │ │ └─┬ vstream@0.1.0
│ │ │   └── extsprintf@1.2.0
│ │ ├── lstream@0.0.3
│ │ ├── mime@1.2.11
│ │ ├── moment@2.4.0
│ │ ├── node-uuid@1.4.1
│ │ ├── once@1.3.0
│ │ ├── path-platform@0.0.1
│ │ ├─┬ progbar@1.0.0
│ │ │ ├─┬ readable-stream@1.0.33
│ │ │ │ ├── core-util-is@1.0.1
│ │ │ │ ├── inherits@2.0.1
│ │ │ │ ├── isarray@0.0.1
│ │ │ │ └── string_decoder@0.10.31
│ │ │ └── sprintf@0.1.5
│ │ ├─┬ readable-stream@1.1.9
│ │ │ ├── core-util-is@1.0.1
│ │ │ └── debuglog@0.0.2
│ │ ├─┬ restify@2.8.1
│ │ │ ├── csv@0.3.7
│ │ │ ├── deep-equal@0.0.0
│ │ │ ├── escape-regexp-component@1.0.2
│ │ │ ├── formidable@1.0.14
│ │ │ ├── keep-alive-agent@0.0.1
│ │ │ ├── lru-cache@2.3.1
│ │ │ ├── negotiator@0.3.0
│ │ │ ├── qs@0.6.6
│ │ │ ├── semver@2.2.1
│ │ │ ├── spdy@1.19.3
│ │ │ ├── tunnel-agent@0.4.0
│ │ │ └── verror@1.3.7
│ │ ├── showdown@0.3.1
│ │ ├─┬ smartdc-auth@2.1.5
│ │ │ ├── assert-plus@0.1.2
│ │ │ ├─┬ bunyan@1.3.4
│ │ │ │ ├─┬ dtrace-provider@0.4.0
│ │ │ │ │ └── nan@1.5.3
│ │ │ │ ├─┬ mv@2.1.1
│ │ │ │ │ ├─┬ mkdirp@0.5.1
│ │ │ │ │ │ └── minimist@0.0.8
│ │ │ │ │ ├── ncp@2.0.0
│ │ │ │ │ └─┬ rimraf@2.4.3
│ │ │ │ │   └─┬ glob@5.0.15
│ │ │ │ │     ├─┬ inflight@1.0.4
│ │ │ │ │     │ └── wrappy@1.0.1
│ │ │ │ │     ├── inherits@2.0.1
│ │ │ │ │     ├─┬ minimatch@3.0.0
│ │ │ │ │     │ └─┬ brace-expansion@1.1.1
│ │ │ │ │     │   ├── balanced-match@0.2.1
│ │ │ │ │     │   └── concat-map@0.0.1
│ │ │ │ │     └── path-is-absolute@1.0.0
│ │ │ │ └── safe-json-stringify@1.0.3
│ │ │ ├── clone@0.1.5
│ │ │ ├── dashdash@1.7.3
│ │ │ ├─┬ sshpk@1.4.4
│ │ │ │ ├── asn1@0.2.3
│ │ │ │ ├── assert-plus@0.1.5
│ │ │ │ ├── big-integer@1.6.7
│ │ │ │ └── dashdash@1.10.1
│ │ │ ├─┬ sshpk-agent@1.1.1
│ │ │ │ ├── assert-plus@0.1.5
│ │ │ │ └─┬ readable-stream@2.0.4
│ │ │ │   ├── core-util-is@1.0.1
│ │ │ │   ├── inherits@2.0.1
│ │ │ │   ├── isarray@0.0.1
│ │ │ │   ├── process-nextick-args@1.0.3
│ │ │ │   ├── string_decoder@0.10.31
│ │ │ │   └── util-deprecate@1.0.2
│ │ │ └─┬ vasync@1.4.3
│ │ │   ├─┬ jsprim@0.3.0
│ │ │   │ ├── extsprintf@1.0.0
│ │ │   │ ├── json-schema@0.2.2
│ │ │   │ └── verror@1.3.3
│ │ │   └─┬ verror@1.1.0
│ │ │     └── extsprintf@1.0.0
│ │ ├─┬ tar@0.1.18
│ │ │ ├── block-stream@0.0.8
│ │ │ ├─┬ fstream@0.1.31
│ │ │ │ ├── graceful-fs@3.0.8
│ │ │ │ ├─┬ mkdirp@0.5.1
│ │ │ │ │ └── minimist@0.0.8
│ │ │ │ └─┬ rimraf@2.4.3
│ │ │ │   └─┬ glob@5.0.15
│ │ │ │     ├─┬ inflight@1.0.4
│ │ │ │     │ └── wrappy@1.0.1
│ │ │ │     ├─┬ minimatch@3.0.0
│ │ │ │     │ └─┬ brace-expansion@1.1.1
│ │ │ │     │   ├── balanced-match@0.2.1
│ │ │ │     │   └── concat-map@0.0.1
│ │ │ │     └── path-is-absolute@1.0.0
│ │ │ └── inherits@2.0.1
│ │ ├─┬ vasync@1.4.0
│ │ │ ├─┬ jsprim@0.3.0
│ │ │ │ ├── extsprintf@1.0.0
│ │ │ │ ├── json-schema@0.2.2
│ │ │ │ └── verror@1.3.3
│ │ │ └─┬ verror@1.1.0
│ │ │   └── extsprintf@1.0.0
│ │ └─┬ watershed@0.3.0
│ │   └── readable-stream@1.0.2
│ ├── printf@0.1.2
│ ├─┬ vasync@1.6.3
│ │ └─┬ verror@1.6.0
│ │   └── extsprintf@1.2.0
│ └─┬ verror@1.3.6
│   └── extsprintf@1.0.2
├── memorystream@0.2.0
├── mkdirp@0.3.1
├─┬ moray@1.0.0 (git+ssh://git@github.com:joyent/node-moray.git#b8e1defd349de40cc4c33502f8b13da73c513a91)
│ ├── assert-plus@0.1.5
│ ├─┬ backoff@2.4.0
│ │ └── precond@0.2.3
│ ├─┬ bunyan@1.5.1
│ │ ├─┬ dtrace-provider@0.6.0
│ │ │ └── nan@2.1.0
│ │ ├─┬ mv@2.1.1
│ │ │ ├─┬ mkdirp@0.5.1
│ │ │ │ └── minimist@0.0.8
│ │ │ ├── ncp@2.0.0
│ │ │ └─┬ rimraf@2.4.3
│ │ │   └─┬ glob@5.0.15
│ │ │     ├─┬ inflight@1.0.4
│ │ │     │ └── wrappy@1.0.1
│ │ │     ├── inherits@2.0.1
│ │ │     ├─┬ minimatch@3.0.0
│ │ │     │ └─┬ brace-expansion@1.1.1
│ │ │     │   ├── balanced-match@0.2.1
│ │ │     │   └── concat-map@0.0.1
│ │ │     └── path-is-absolute@1.0.0
│ │ └── safe-json-stringify@1.0.3
│ ├── clone@0.1.18
│ ├─┬ fast@0.3.10 (git+ssh://git@github.com/mcavage/node-fast.git#806645590ce3ef01ff698ffc5ee4f420cbadfae4)
│ │ ├── crc@0.2.1
│ │ ├─┬ microtime@0.5.1
│ │ │ ├── bindings@1.1.1
│ │ │ └── nan@0.6.0
│ │ ├─┬ readable-stream@1.1.10
│ │ │ ├── core-util-is@1.0.1
│ │ │ ├── debuglog@0.0.2
│ │ │ └── string_decoder@0.10.31
│ │ └─┬ verror@1.3.6
│ │   └── extsprintf@1.0.2
│ ├─┬ libuuid@0.1.4
│ │ └── nan@1.8.4
│ ├─┬ native-dns@0.4.1
│ │ ├── binaryheap@0.0.3
│ │ ├── buffercursor@0.0.12
│ │ └── ipaddr.js@1.0.4
│ ├── once@1.3.0
│ └─┬ progbar@0.1.0
│   └── sprintf@0.1.5
├── native-dns@0.2.1
├── node-uuid@1.4.0
├── panic@0.2.1
├── posix-getopt@1.0.0
├─┬ restify@2.3.5
│ ├── backoff@2.0.0
│ ├── deep-equal@0.0.0
│ ├── formidable@1.0.11
│ ├─┬ http-signature@0.9.11
│ │ ├── asn1@0.1.11
│ │ └── ctype@0.5.2
│ ├── keep-alive-agent@0.0.1
│ ├── lru-cache@2.2.2
│ ├── mime@1.2.9
│ ├── negotiator@0.2.5
│ ├── once@1.1.1
│ ├── qs@0.5.3
│ ├── semver@1.1.2
│ ├── spdy@1.4.6
│ └─┬ verror@1.3.5
│   └── extsprintf@1.0.0
├── retry@0.6.0
├─┬ sdc-clients@9.0.3 (git+ssh://git@github.com:joyent/node-sdc-clients.git#ad24d7f70159f71ebed1c1f6cdf4d388044f3865)
│ ├── assert-plus@0.1.5
│ ├── async@0.9.2
│ ├─┬ backoff@2.4.1
│ │ └── precond@0.2.3
│ ├─┬ bunyan@1.5.1
│ │ ├─┬ dtrace-provider@0.6.0
│ │ │ └── nan@2.1.0
│ │ ├─┬ mv@2.1.1
│ │ │ ├─┬ mkdirp@0.5.1
│ │ │ │ └── minimist@0.0.8
│ │ │ ├── ncp@2.0.0
│ │ │ └─┬ rimraf@2.4.3
│ │ │   └─┬ glob@5.0.15
│ │ │     ├─┬ inflight@1.0.4
│ │ │     │ └── wrappy@1.0.1
│ │ │     ├── inherits@2.0.1
│ │ │     ├─┬ minimatch@3.0.0
│ │ │     │ └─┬ brace-expansion@1.1.1
│ │ │     │   ├── balanced-match@0.2.1
│ │ │     │   └── concat-map@0.0.1
│ │ │     └── path-is-absolute@1.0.0
│ │ └── safe-json-stringify@1.0.3
│ ├── clone@0.1.8
│ ├─┬ libuuid@0.1.4
│ │ └── nan@1.8.4
│ ├── lru-cache@2.3.0
│ ├─┬ once@1.3.2
│ │ └── wrappy@1.0.1
│ ├─┬ restify@2.8.5 (git://github.com/joyent/node-restify.git#fd5d5b55f12bca7dd3c3a4adf1e15c89d4b41010)
│ │ ├─┬ csv@0.4.6
│ │ │ ├── csv-generate@0.0.6
│ │ │ ├── csv-parse@1.0.0
│ │ │ ├── csv-stringify@0.0.8
│ │ │ └── stream-transform@0.1.1
│ │ ├── deep-equal@0.2.2
│ │ ├─┬ dtrace-provider@0.3.2
│ │ │ └── nan@1.3.0
│ │ ├── escape-regexp-component@1.0.2
│ │ ├── formidable@1.0.17
│ │ ├─┬ http-signature@0.10.1
│ │ │ ├── asn1@0.1.11
│ │ │ └── ctype@0.5.3
│ │ ├── keep-alive-agent@0.0.1
│ │ ├── lru-cache@2.7.0
│ │ ├── mime@1.3.4
│ │ ├── negotiator@0.4.9
│ │ ├── node-uuid@1.4.7
│ │ ├── qs@1.2.2
│ │ ├── semver@2.3.2
│ │ ├── spdy@1.32.5
│ │ └── tunnel-agent@0.4.1
│ ├─┬ smartdc-auth@2.1.6
│ │ ├── assert-plus@0.1.2
│ │ ├─┬ bunyan@1.3.4
│ │ │ ├─┬ dtrace-provider@0.4.0
│ │ │ │ └── nan@1.5.3
│ │ │ ├─┬ mv@2.1.1
│ │ │ │ ├─┬ mkdirp@0.5.1
│ │ │ │ │ └── minimist@0.0.8
│ │ │ │ ├── ncp@2.0.0
│ │ │ │ └─┬ rimraf@2.4.3
│ │ │ │   └─┬ glob@5.0.15
│ │ │ │     ├─┬ inflight@1.0.4
│ │ │ │     │ └── wrappy@1.0.1
│ │ │ │     ├── inherits@2.0.1
│ │ │ │     ├─┬ minimatch@3.0.0
│ │ │ │     │ └─┬ brace-expansion@1.1.1
│ │ │ │     │   ├── balanced-match@0.2.1
│ │ │ │     │   └── concat-map@0.0.1
│ │ │ │     └── path-is-absolute@1.0.0
│ │ │ └── safe-json-stringify@1.0.3
│ │ ├── clone@0.1.5
│ │ ├── dashdash@1.7.3
│ │ ├─┬ http-signature@1.0.2
│ │ │ ├── assert-plus@0.1.5
│ │ │ └─┬ jsprim@1.2.2
│ │ │   ├── extsprintf@1.0.2
│ │ │   ├── json-schema@0.2.2
│ │ │   └── verror@1.3.6
│ │ ├── once@1.3.0
│ │ ├─┬ sshpk@1.4.7
│ │ │ ├── asn1@0.2.3
│ │ │ ├── assert-plus@0.1.5
│ │ │ ├── big-integer@1.6.7
│ │ │ └── dashdash@1.10.1
│ │ ├─┬ sshpk-agent@1.1.1
│ │ │ ├── assert-plus@0.1.5
│ │ │ └─┬ readable-stream@2.0.4
│ │ │   ├── core-util-is@1.0.1
│ │ │   ├── inherits@2.0.1
│ │ │   ├── isarray@0.0.1
│ │ │   ├── process-nextick-args@1.0.3
│ │ │   ├── string_decoder@0.10.31
│ │ │   └── util-deprecate@1.0.2
│ │ └─┬ vasync@1.4.3
│ │   ├─┬ jsprim@0.3.0
│ │   │ ├── extsprintf@1.0.0
│ │   │ ├── json-schema@0.2.2
│ │   │ └── verror@1.3.3
│ │   └─┬ verror@1.1.0
│ │     └── extsprintf@1.0.0
│ ├─┬ ufds@0.3.0 (git://github.com/joyent/node-ufds.git#a7c674b76696fe7ab0fff1e2486f20d3af6a0d1a)
│ │ ├── clone@0.2.0
│ │ ├─┬ http-signature@0.10.1
│ │ │ ├── asn1@0.1.11
│ │ │ └── ctype@0.5.3
│ │ ├─┬ ldapjs@0.7.1 (git://github.com/mcavage/node-ldapjs.git#aed6d2b043715e1a37c45a6293935c25c023ebce)
│ │ │ ├── asn1@0.2.1
│ │ │ ├─┬ backoff@2.4.0
│ │ │ │ └── precond@0.2.3
│ │ │ ├─┬ bunyan@0.22.1
│ │ │ │ └── mv@0.0.5
│ │ │ ├── dashdash@1.6.0
│ │ │ ├── once@1.3.0
│ │ │ └─┬ vasync@1.5.0
│ │ │   ├─┬ jsprim@0.3.0
│ │ │   │ ├── extsprintf@1.0.0
│ │ │   │ ├── json-schema@0.2.2
│ │ │   │ └── verror@1.3.3
│ │ │   └─┬ verror@1.1.0
│ │ │     └── extsprintf@1.0.0
│ │ └── lru-cache@2.7.0
│ └─┬ verror@1.6.0
│   └── extsprintf@1.2.0
├── semver@1.1.4
├── spawn-async@0.0.1
├── statvfs@2.0.0
├── strsplit@1.0.0
├─┬ tab@0.0.2
│ ├── assert-plus@0.1.0
│ └── extsprintf@1.0.1
├─┬ vasync@1.6.2
│ └─┬ verror@1.1.0
│   └── extsprintf@1.0.0
├─┬ verror@1.4.0
│ └── extsprintf@1.0.3
├── wordwrap@0.0.2
├── zoneid@0.2.0
└─┬ zsock-async@0.0.2
  └─┬ v8plus@0.2.1
    └── posix-getopt@0.0.1
davepacheco commented 8 years ago

I'm hitting this a fair bit on my test system, and the good news is that I've got a core file. It's thoth dump fe0b68403e13612a8c02a1ff25e443bd.

arekinath commented 8 years ago

Ok, in this dump it appears that the Client somehow managed to write the request-identities frame twice. Then the agent responded twice, and we blew up because the request had already been handled. I've added some additional asserts in cc4755788d932993707b93ac6ba40d827502e914 which may help get a stack from the real culprit that caused the double-send. Any chance you could have a run with it?

davepacheco commented 8 years ago

Sure, I'll pull this in and start running with it.

davepacheco commented 8 years ago

With that fix in place, I get a new failure mode:

Uncaught TypeError: Converting circular structure to JSON

FROM
getMessage (assert.js:75:24)
new AssertionError (assert.js:45:37)
fail (assert.js:92:9)
Function.strictEqual (assert.js:253:5)
Object.module.exports.(anonymous function) [as strictEqual] (/home/dap/manta-marlin/build/proto/root/opt/smartdc/marlin/node_modules/manta/node_modules/smartdc-auth/node_modules/sshpk-agent/node_modules/assert-plus/assert.js:242:35)
EventEmitter.<anonymous> (/home/dap/manta-marlin/build/proto/root/opt/smartdc/marlin/node_modules/manta/node_modules/smartdc-auth/node_modules/sshpk-agent/lib/client.js:322:10)
EventEmitter.emit (events.js:95:17)
Client.<anonymous> (/home/dap/manta-marlin/build/proto/root/opt/smartdc/marlin/node_modules/manta/node_modules/smartdc-auth/node_modules/sshpk-agent/lib/client.js:403:17)
Client.g (events.js:180:16)
Client.emit (events.js:117:20)
Socket.<anonymous> (/home/dap/manta-marlin/build/proto/root/opt/smartdc/marlin/node_modules/manta/node_modules/smartdc-auth/node_modules/sshpk-agent/lib/client.js:455:8)
Socket.g (events.js:180:16)
Socket.emit (events.js:117:20)
Object.afterConnect [as oncomplete] (net.js:886:10)

The core file is thoth dump e43ad23aed1771ac95deb47bafce8a65.

arekinath commented 8 years ago

That's the dump I wanted! :) I have a vaguely solid theory of what went wrong here now -- can you try 6bcd899209e2df8b5c911c45744a197de8e280b5 for me?

davepacheco commented 8 years ago

With that change, I've seen two different crashes. The first is:

Uncaught pipeline callback invoked after the pipeline has already completed ({ operations: 
   [ { func: [Function: checkAgentForKey],
       funcname: 'checkAgentForKey',
       status: 'ok',
       err: undefined,
       result: undefined },
     { func: [Function: loadKey],
       funcname: 'loadKey',
       status: 'ok',
       err: undefined,
       result: undefined } ],
  successes: [ undefined, undefined ],
  ndone: 2,
  nerrors: 0 })

FROM
next (/home/dap/manta-marlin/build/proto/root/opt/smartdc/marlin/node_modules/manta/node_modules/smartdc-auth/node_modules/vasync/lib/vasync.js:169:10)
/home/dap/manta-marlin/build/proto/root/opt/smartdc/marlin/node_modules/manta/node_modules/smartdc-auth/lib/index.js:636:21
f (/home/dap/manta-marlin/build/proto/root/opt/smartdc/marlin/node_modules/manta/node_modules/once/once.js:16:25)
/home/dap/manta-marlin/build/proto/root/opt/smartdc/marlin/node_modules/manta/node_modules/smartdc-auth/lib/index.js:258:21
fs.js:271:14
Object.oncomplete (fs.js:107:15)
December  7, 2015 02:53:16 PM PST twojobs_plusquick

That one is thoth dump 17b3b4e022950c21c77e6d813ad940c3.

The second crash was from a subprocess that was not run with --abort-on-uncaught-exception, but the stack is here:

mfind: TypeError: Cannot call method 'createSign' of undefined

FROM
callback (/home/dap/manta-marlin/build/proto/root/opt/smartdc/marlin/test/common.js:245:11)
/home/dap/manta-marlin/build/proto/root/opt/smartdc/marlin/test/live/common.js:760:4
next (/home/dap/manta-marlin/build/proto/root/opt/smartdc/marlin/node_modules/vasync/lib/vasync.js:201:4)
/home/dap/manta-marlin/build/proto/root/opt/smartdc/marlin/test/live/common.js:928:4
ChildProcess.exithandler (child_process.js:652:7)
ChildProcess.emit (events.js:98:17)
maybeClose (child_process.js:756:16)
Process.ChildProcess._handle.onexit (child_process.js:823:5)
davepacheco commented 8 years ago

I pulled in 93076e3f95480cdf383fdfb28376687e36860e18, and found:

Uncaught TypeError: Converting circular structure to JSON

FROM
getMessage (assert.js:75:24)
new AssertionError (assert.js:45:37)
fail (assert.js:92:9)
Function.strictEqual (assert.js:253:5)
Object.module.exports.(anonymous function) [as strictEqual] (/home/dap/manta-marlin/build/proto/root/opt/smartdc/marlin/node_modules/manta/node_modules/smartdc-auth/node_modules/sshpk-agent/node_modules/assert-plus/assert.js:242:35)
EventEmitter.<anonymous> (/home/dap/manta-marlin/build/proto/root/opt/smartdc/marlin/node_modules/manta/node_modules/smartdc-auth/node_modules/sshpk-agent/lib/client.js:322:10)
EventEmitter.emit (events.js:95:17)
Client.<anonymous> (/home/dap/manta-marlin/build/proto/root/opt/smartdc/marlin/node_modules/manta/node_modules/smartdc-auth/node_modules/sshpk-agent/lib/client.js:343:9)
Client.g (events.js:180:16)
Client.emit (events.js:117:20)
Socket.<anonymous> (/home/dap/manta-marlin/build/proto/root/opt/smartdc/marlin/node_modules/manta/node_modules/smartdc-auth/node_modules/sshpk-agent/lib/client.js:456:8)
Socket.g (events.js:180:16)
Socket.emit (events.js:117:20)
Object.afterConnect [as oncomplete] (net.js:886:10)

This is thoth dump e136305cad98c32ed8868f1ebfef9679.

arekinath commented 8 years ago

Want to try with 26506d1d2ec1c8949670912fca78fd6f8e21b2c2 now? I've resorted to splitting out the client state machine into much smaller pieces to try to see what on earth is going on.