Open davepacheco opened 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.
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?
Sure, I'll pull this in and start running with it.
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.
That's the dump I wanted! :) I have a vaguely solid theory of what went wrong here now -- can you try 6bcd899209e2df8b5c911c45744a197de8e280b5 for me?
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)
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.
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.
I had a program run into this uncaught exception:
I only saw it once, despite a few tries. I'm using Node v0.10.32, and here's the whole "npm ls" output: