Espero que alguien aquí pueda ayudarme, no estoy teniendo mucha suerte en descifrar esto por mi cuenta. Estoy ejecutando node.js versión 0.3.1 en Cygwin. Estoy usando Connect y Socket.io. Parece que tengo algunos problemas aleatorios con DNS o algo, no lo he descubierto del todo. El resultado final es que el servidor funciona correctamente, pero cuando un navegador intenta conectarse a él, la solicitud HTTP inicial funciona, Socket.io se conecta y luego el servidor muere (se muestra a continuación).Node.js, Cygwin y Socket.io entran en un bar ... Node.js arroja ENOBUFS y todo el mundo muere
No creo que tenga nada que ver con la solicitud HTTP porque el servidor obtiene muchos datos publicados en ella, y recibía solicitudes y respondía hasta que mi conexión lo mató. Busqué en Google y lo más parecido que he encontrado es que el DNS está configurado incorrectamente. Es un programa de red destinado a ejecutarse solo en una red interna, así que configuré nameserver x.x.x.x
en mi /etc/resolv.conf
en el DNS interno. También he agregado nameserver 8.8.8.8
además. No estoy seguro de qué más comprobar, pero estaría agradecido de cualquier ayuda.
En node.exe.stackdump
Exception: STATUS_ACCESS_VIOLATION at eip=610C51B9
eax=00000000 ebx=00000001 ecx=00000000 edx=00000308 esi=00000000 edi=010FCCB0
ebp=010FCAEC esp=010FCAC4 program=\\?\E:\cygwin\usr\local\bin\node.exe, pid 3296, thread unknown (0xBEC)
cs=0023 ds=002B es=002B fs=0053 gs=002B ss=002B
Stack trace:
Frame Function Args
010FCAEC 610C51B9 (00000000, 00000000, 00000000, 00000000)
010FCBFC 610C5B55 (00000000, 00000000, 00000000, 00000000)
010FCCBC 610C693A (FFFFFFFF, FFFFFFFF, 750334F3, FFFFFFFE)
010FCD0C 61027CB2 (00000002, F4B994D5, 010FCE64, 00000002)
010FCD98 76306B59 (00000002, 010FCDD4, 763069A4, 00000002)
End of stack trace
Resultado del nodo:
node.js:50
throw e; // process.nextTick error, or 'error' event on first tick
^
Error: ENOBUFS, No buffer space available
at doConnect (net.js:642:19)
at net.js:803:9
at dns.js:166:30
at IOWatcher.callback (dns.js:48:15)
EDITAR
estoy golpeando un servidor LDAP utilizando http.createClient
inmediatamente después de un cliente se conecta a obtener información, y que parece donde el problema es que está causando ENOBUFS. He editado la fuente to include && errno != ENOBUFS
que ahora impide que el servidor se muera, pero ahora la solicitud LDAP no funciona. No estoy seguro de cuál es el problema que causaría eso sin embargo. Como mencioné, esta es una aplicación interna única, por lo que configuro los servidores DNS en /etc/resolv.conf
en los servidores DNS que se están aplicando a la máquina host. ¿No estoy seguro de si esto es parte del problema?
EDIT 2
He aquí alguna salida de gdb --args ./node_g --debug ../myscript.js
. No estoy seguro de si esto está relacionado con ENOBUFS, sin embargo, ya que parece estar desconectar inmediatamente después de la conexión con Socket.io
[New thread 672.0x100]
Error: dll starting at 0x76e30000 not found.
Error: dll starting at 0x76250000 not found.
Error: dll starting at 0x76e30000 not found.
Error: dll starting at 0x76f50000 not found.
[New thread 672.0xc90]
[New thread 672.0x448]
debugger listening on port 5858
[New thread 672.0xbf4]
14 Jan 18:48:57 - socket.io ready - accepting connections
[New thread 672.0xed4]
[New thread 672.0xd68]
[New thread 672.0x1244]
[New thread 672.0xf14]
14 Jan 18:49:02 - Initializing client with transport "websocket"
assertion "b[1] == 0" failed: file "../src/node.cc", line 933, function: ssize_t
node::DecodeWrite(char*, size_t, v8::Handle<v8::Value>, node::encoding)
Program received signal SIGABRT, Aborted.
0x7724f861 in ntdll!RtlUpdateClonedSRWLock()
from /cygdrive/c/Windows/system32/ntdll.dll
(gdb) backtrace
#0 0x7724f861 in ntdll!RtlUpdateClonedSRWLock()
from /cygdrive/c/Windows/system32/ntdll.dll
#1 0x7724f861 in ntdll!RtlUpdateClonedSRWLock()
from /cygdrive/c/Windows/system32/ntdll.dll
#2 0x75030816 in WaitForSingleObjectEx()
from /cygdrive/c/Windows/syswow64/KernelBase.dll
#3 0x0000035c in ??()
#4 0x00000000 in ??()
(gdb)
Si no publica el código en sí, bien, puede ser un poco difícil adivinar cuál es el problema. – Pointy
El código no es el problema. Estoy actualizando la pregunta con más información. –
+1 para el tema – WarrenFaith