Since I can't get up to the most recent version of nodejs (see above post) and I'm on v0.10.12 is it still worth posting an issue?
On Tuesday, July 1, 2014 6:50:54 PM UTC-5, Nathan Rajlich wrote: > > This sounds like a genuine bug in Node.js / V8. Can you open an issue on > the Node.js Issue tracker so that we can look into this further? > > Also, what version of Node.js are you using? > > > On Mon, Jun 30, 2014 at 12:25 PM, Nic Stage <[email protected] > <javascript:>> wrote: > > Thanks for your reply! Initializing this.sequenceNumber, like so: > > var Base64Id = function() { > this.sequenceNumber = -1; > }; > > results in the same error (buffer.js:784 "Value is out of bounds"). I > console.log this.sequence number just before the call to writeInt32BE(): > > this.sequenceNumber = (this.sequenceNumber + 1) | 0; > console.log(rand, this.sequenceNumber); > rand.writeInt32BE(this.sequenceNumber, 11); > > and I get this on the console: > > <Buffer 08 dd 51 00 00 00 00 00 00 00 00 00 00 00 00> 0 > > So the bitwise operator is doing what I'd expect and resulting in 0. The > buffer looks like a normal buffer of 15 length, as expected, so I don't > understand why rand.writeInt32BE(this.sequenceNumber, 11) is resulting > this error. It must be some quirk of nodejs / V8 on this particular > architecture. > > Here is another complete oddity (to me), that may be a clue. On the ARM > machine, if I run this code: > > var x = new Buffer('0000000000'); > console.log(x); > x.writeInt32BE(0x00, 0); > console.log(x); > > I get the result: > > <Buffer 30 30 30 30 30 30 30 30 30 30> <Buffer 00 00 00 00 30 30 30 30 30 > 30> > > But if I change the code to simply log the length of the buffer (instead > of the buffer itself) before calling writeInt32BE(): > > var x = new Buffer('0000000000'); > console.log(x.length); > x.writeInt32BE(0x00, 0); > console.log(x); > > It crashes the same error (buffer.js:784 "value is out of bounds"). > Basically, if I change the second line to log anything but x, it will > crash. > > On Monday, June 30, 2014 1:22:52 PM UTC-5, Jimb Esser wrote: > > Adding that "true" only tells the Buffer module to skip the assert, which > is telling you about what is probably a legitimate problem. It looks like > on that platform ((undefined + 1) | 0) is ending up as NaN instead of 0. > Try adding proper initialization to the Base64Id constructor and see if > this fixes it: > var Base64Id = function() { > this.sequenceNumber = -1; > }; > If so, that sounds like a V8 bug on that platform (should be simple to > reproduce on the console by executing "((undefined + 1) | 0)" and see if it > gets anything other than the integer 0). > > On Sunday, June 29, 2014 6:53:25 PM UTC-7, Nic Stage wrote: > > If this is more of an engine.io or socket.io question, I apologize in > advance... > > I am working on getting nodejs / socket.io / express running on busybox > linux on an ARMv5TE processor. I have nodejs up and running and the > following code runs without errors. > > var app = require('express')();var server = require('http').Server(app);var > io = require('socket.io')(server); > > server.listen(80); > > app.get('/', function (req, res) { > res.sendfile(__dirname + '/index.html');}); > > io.on('connection', function (socket) { > socket.emit('news', { hello: 'world' }); > socket.on('my other event', function (data) { > console.log(data); > });}); > > Until I try to connect via websocket from a client. From the browser (with > the client script socket.io.jsloaded), var socket = io.connect('ws:// > 192.168.1.8:3000'); or var socket = io.connect('http://192.168.1.8:3000');. > Node then logs this error to the console and stops: > > buffer.js:784 > throw TypeError('value is out of bounds'); > TypeError: value is out of bounds > at TypeError (<anonymous>) > at checkInt (buffer.js:784:11) > at Buffer.writeInt32BE (buffer.js:924:5) > at Base64Id.generateId > (/usr/lib/node_modules/socket.io/node_modules/engine.io/node_modules/base64id/lib/base64id.js:88:8) > at Server.handshake > (/usr/lib/node_modules/socket.io/node_modules/engine.io/lib/server.js:222:21) > at > /usr/lib/node_modules/socket.io/node_modules/engine.io/lib/server.js:184:12 > at Server.checkRequest > (/usr/lib/node_modules/socket.io/lib/index.js:67:51) > at Server.verify > (/usr/lib/node_modules/socket.io/node_modules/engine.io/lib/server.js:127:17) > at Server.handleRequest > (/usr/lib/node_modules/socket.io/node_modules/engine.io/lib/server.js:174:8) > at Server.<anonymous> > (/usr/lib/node_modules/socket.io/node_modules/engine.io/lib/server.js:362:12) > > Running the same node server from my desktop computer (Windows 8 64 bit), > does not produce this error. > > I can trace the error to these lines of code in node_modules/socket.io/ > node_modules/engine.io/node_modules/base64id/lib/base64id.js: > > Base64Id.prototype.generateId = function () { > var rand = new Buffer(15); // multiple of 3 for base64 > if (!rand.writeInt32BE) { > return Math.abs(Math.random() * Math.random() * Date.now() | > 0).toString() + Math.abs(Math.random() * Math.random() * Date.now() | > 0).toString(); > }this.sequenceNumber = (this.sequenceNumber + 1</ > > ... -- Job board: http://jobs.nodejs.org/ New group rules: https://gist.github.com/othiym23/9886289#file-moderation-policy-md Old group rules: https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines --- You received this message because you are subscribed to the Google Groups "nodejs" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/nodejs/39d7b3d2-bb4e-4b3d-ac74-f1d1efd2f3e4%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
