Hi.

Thursday, Dec 27 2012, 21:07:25 UTC+6 Ben Noordhuis wrote:
>
>
> Oracle Studio (nay Sun Studio) is not really supported.  The minimum 
> requirement is gcc 4.2.  I believe there are pre-compiled 4.5 packages 
> but if not, compiling from source is not difficult. 
>

Okay. Thanks for this advice, I finally managed to build gcc 4.7.x on 
Solaris 10. Turned out it was less difficult than I imagined and far less 
difficult than some of the project I built on Solaris 10. But. :) The 
tricky part is that node.js built with this gcc 4.7.x is crashing. Like 
immidiately:

 ./node
Segmentation Fault (core dumped)

Of course I decided that something is wrong with the compiler, and that it 
actually was not that simple. So I built a couple of other projects 
(besides the "hello world"), like gdb and bash. Both seem to be running 
fine, at least they aren't crashing immidiately after start. But I still 
suppose that something went wrong. About that: when building I had to do 
two modification: first was getting rid of the -Wl,--start-group and 
-Wl,--end-group, Solaris 10 ld doesn't support that (although Solaris 11 ld 
does), so I read here that this can be changed by adding a -z rescan option 
to the ld, and I did that. Second modification I made was -lrt flag to the 
final linking stage, because without it I was having the 'undefined 
symbols' error for the sem_*() routines. Was it wrong ? Can these 
modifications cause the crash ?

So, about this crash. The backtrace isn't really helping. I've built the 
node.js with a debug (-g) flag but it seems to me like it's still built 
without debug symbols (although -g was present at the build time, and I saw 
it on the stdout):

# dbx node core
For information about new features see `help changes'
To remove this message, put `dbxenv suppress_startup_message 7.7' in your 
.dbxrc
Reading node
core file header read successfully
Reading ld.so.1
Reading libumem.so.1
Reading libkstat.so.1
Reading libsocket.so.1
Reading libnsl.so.1
Reading librt.so.1
Reading libstdc++.so.6.0.17
Reading libm.so.2
Reading libgcc_s.so.1
Reading libpthread.so.1
Reading libc.so.1
Reading libaio.so.1
Reading libmd.so.1
t@1 (l@1) program terminated by signal SEGV (no mapping at the fault 
address)
0x081b9765: _init+0x0015:       addb     %al,(%eax)
(dbx) where                                                                 
 
current thread: t@1
=>[1] _init(0x1, 0x80479c0, 0x80479c8, 0x81b9790, 0x0, 0x0), at 0x81b9765

GDB (built with a GCC that I build):

# /usr/local/gdb/bin/gdb node core
GNU gdb (GDB) 7.5.1
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later 
<http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i386-pc-solaris2.10".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /usr/local/node.js/bin/node...done.
[New LWP 1]
[Thread debugging using libthread_db enabled]
[New Thread 1 (LWP 1)]
Core was generated by `./node'.
Program terminated with signal 11, Segmentation fault.
#0  0x081b9765 in _init ()
(gdb) bt
#0  0x081b9765 in _init ()
#1  0x0819b9fb in _start ()
(gdb)

So I got a truss output:

# truss ./node
execve("node", 0x080479C0, 0x080479C8)  argc = 1
mmap(0x00000000, 4096, PROT_READ|PROT_WRITE|PROT_EXEC, 
MAP_PRIVATE|MAP_ANON, -1, 0) = 0xFEFF0000
resolvepath("/usr/lib/ld.so.1", "/lib/ld.so.1", 1023) = 12
getcwd("/usr/local/node.js/bin", 1018)          = 0
resolvepath("/usr/local/node.js/bin/node", "/usr/local/node.js/bin/node", 
1023) = 27
stat64("/usr/local/node.js/bin/node", 0x08047750) = 0
open("/var/ld/ld.config", O_RDONLY)             = 3
fstat64(3, 0x08047300)                          = 0
mmap(0x00000000, 612, PROT_READ, MAP_SHARED, 3, 0) = 0xFEFC0000
close(3)                                        = 0
sysconfig(_CONFIG_PAGESIZE)                     = 4096
stat64("/usr/local/gcc/lib/libkstat.so.1", 0x08046FF0) Err#2 ENOENT
stat64("/lib/libkstat.so.1", 0x08046FF0)        = 0
resolvepath("/lib/libkstat.so.1", "/lib/libkstat.so.1", 1023) = 18
open("/lib/libkstat.so.1", O_RDONLY)            = 3
mmap(0x00010000, 32768, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_ALIGN, 3, 0) = 
0xFEFB0000
mmap(0x00010000, 73728, PROT_NONE, 
MAP_PRIVATE|MAP_NORESERVE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFEF90000
mmap(0xFEF90000, 3339, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_TEXT, 
3, 0) = 0xFEF90000
mmap(0xFEFA1000, 268, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_INITDATA, 3, 4096) = 0xFEFA1000
munmap(0xFEF91000, 65536)                       = 0
memcntl(0xFEF90000, 1388, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0
close(3)                                        = 0
stat64("/usr/local/gcc/lib/libumem.so.1", 0x08046FF0) Err#2 ENOENT
stat64("/lib/libumem.so.1", 0x08046FF0)         = 0
resolvepath("/lib/libumem.so.1", "/lib/libumem.so.1", 1023) = 17
open("/lib/libumem.so.1", O_RDONLY)             = 3
mmap(0xFEFB0000, 32768, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 
0xFEFB0000
mmap(0x00010000, 200704, PROT_NONE, 
MAP_PRIVATE|MAP_NORESERVE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFEF50000
mmap(0xFEF50000, 87269, PROT_READ|PROT_EXEC, 
MAP_PRIVATE|MAP_FIXED|MAP_TEXT, 3, 0) = 0xFEF50000
mmap(0xFEF76000, 19412, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_INITDATA, 3, 90112) = 0xFEF76000
mmap(0xFEF7B000, 22488, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_ANON, -1, 0) = 0xFEF7B000
munmap(0xFEF66000, 65536)                       = 0
mmap(0x00000000, 4096, PROT_READ|PROT_WRITE|PROT_EXEC, 
MAP_PRIVATE|MAP_ANON, -1, 0) = 0xFEF70000
memcntl(0xFEF50000, 23008, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0
close(3)                                        = 0
stat64("/usr/local/gcc/lib/libsocket.so.1", 0x08046FF0) Err#2 ENOENT
stat64("/lib/libsocket.so.1", 0x08046FF0)       = 0
resolvepath("/lib/libsocket.so.1", "/lib/libsocket.so.1", 1023) = 19
open("/lib/libsocket.so.1", O_RDONLY)           = 3
mmap(0xFEFB0000, 32768, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 
0xFEFB0000
mmap(0x00010000, 114688, PROT_NONE, 
MAP_PRIVATE|MAP_NORESERVE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFEF30000
mmap(0xFEF30000, 43986, PROT_READ|PROT_EXEC, 
MAP_PRIVATE|MAP_FIXED|MAP_TEXT, 3, 0) = 0xFEF30000
mmap(0xFEF4B000, 2645, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_INITDATA, 3, 45056) = 0xFEF4B000
munmap(0xFEF3B000, 65536)                       = 0
memcntl(0xFEF30000, 12080, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0
close(3)                                        = 0
stat64("/usr/local/gcc/lib/libnsl.so.1", 0x08046FF0) Err#2 ENOENT
stat64("/lib/libnsl.so.1", 0x08046FF0)          = 0
resolvepath("/lib/libnsl.so.1", "/lib/libnsl.so.1", 1023) = 16
open("/lib/libnsl.so.1", O_RDONLY)              = 3
mmap(0xFEFB0000, 32768, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 
0xFEFB0000
mmap(0x00010000, 647168, PROT_NONE, 
MAP_PRIVATE|MAP_NORESERVE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFEE90000
mmap(0xFEE90000, 526189, PROT_READ|PROT_EXEC, 
MAP_PRIVATE|MAP_FIXED|MAP_TEXT, 3, 0) = 0xFEE90000
mmap(0xFEF21000, 19893, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_INITDATA, 3, 528384) = 0xFEF21000
mmap(0xFEF26000, 30056, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_ANON, -1, 0) = 0xFEF26000
munmap(0xFEF11000, 65536)                       = 0
memcntl(0xFEE90000, 58076, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0
close(3)                                        = 0
stat64("/usr/local/gcc/lib/librt.so.1", 0x08046FF0) Err#2 ENOENT
stat64("/lib/librt.so.1", 0x08046FF0)           = 0
resolvepath("/lib/librt.so.1", "/lib/librt.so.1", 1023) = 15
open("/lib/librt.so.1", O_RDONLY)               = 3
mmap(0xFEFB0000, 32768, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 
0xFEFB0000
mmap(0x00010000, 94208, PROT_NONE, 
MAP_PRIVATE|MAP_NORESERVE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFEE70000
mmap(0xFEE70000, 22982, PROT_READ|PROT_EXEC, 
MAP_PRIVATE|MAP_FIXED|MAP_TEXT, 3, 0) = 0xFEE70000
mmap(0xFEE86000, 750, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_INITDATA, 3, 24576) = 0xFEE86000
munmap(0xFEE76000, 65536)                       = 0
memcntl(0xFEE70000, 8548, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0
close(3)                                        = 0
stat64("/usr/local/gcc/lib/libstdc++.so.6", 0x08046FF0) = 0
resolvepath("/usr/local/gcc/lib/libstdc++.so.6", 
"/usr/local/gcc/lib/libstdc++.so.6.0.17", 1023) = 38
open("/usr/local/gcc/lib/libstdc++.so.6", O_RDONLY) = 3
mmap(0xFEFB0000, 32768, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 
0xFEFB0000
mmap(0x00010000, 1138688, PROT_NONE, 
MAP_PRIVATE|MAP_NORESERVE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFED50000
mmap(0xFED50000, 833916, PROT_READ|PROT_EXEC, 
MAP_PRIVATE|MAP_FIXED|MAP_TEXT, 3, 0) = 0xFED50000
mmap(0xFEE2B000, 211516, PROT_READ|PROT_WRITE|PROT_EXEC, 
MAP_PRIVATE|MAP_FIXED|MAP_INITDATA, 3, 831488) = 0xFEE2B000
mmap(0xFEE5F000, 26936, PROT_READ|PROT_WRITE|PROT_EXEC, 
MAP_PRIVATE|MAP_FIXED|MAP_ANON, -1, 0) = 0xFEE5F000
munmap(0xFEE1C000, 61440)                       = 0
mmap(0x00000000, 4096, PROT_READ|PROT_WRITE|PROT_EXEC, 
MAP_PRIVATE|MAP_ANON, -1, 0) = 0xFEF40000
memcntl(0xFED50000, 282876, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0
close(3)                                        = 0
stat64("/usr/local/gcc/lib/libm.so.2", 0x08046FF0) Err#2 ENOENT
stat64("/lib/libm.so.2", 0x08046FF0)            = 0
resolvepath("/lib/libm.so.2", "/lib/libm.so.2", 1023) = 14
open("/lib/libm.so.2", O_RDONLY)                = 3
mmap(0xFEFB0000, 32768, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 
0xFEFB0000
mmap(0x00010000, 376832, PROT_NONE, 
MAP_PRIVATE|MAP_NORESERVE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFECF0000
mmap(0xFECF0000, 296324, PROT_READ|PROT_EXEC, 
MAP_PRIVATE|MAP_FIXED|MAP_TEXT, 3, 0) = 0xFECF0000
mmap(0xFED48000, 13308, PROT_READ|PROT_WRITE|PROT_EXEC, 
MAP_PRIVATE|MAP_FIXED|MAP_INITDATA, 3, 294912) = 0xFED48000
munmap(0xFED39000, 61440)                       = 0
memcntl(0xFECF0000, 25452, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0
close(3)                                        = 0
stat64("/usr/local/gcc/lib/libgcc_s.so.1", 0x08046FF0) = 0
resolvepath("/usr/local/gcc/lib/libgcc_s.so.1", 
"/usr/local/gcc/lib/libgcc_s.so.1", 1023) = 32
open("/usr/local/gcc/lib/libgcc_s.so.1", O_RDONLY) = 3
mmap(0xFEFB0000, 32768, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 
0xFEFB0000
mmap(0x00010000, 163840, PROT_NONE, 
MAP_PRIVATE|MAP_NORESERVE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFECC0000
mmap(0xFECC0000, 93312, PROT_READ|PROT_EXEC, 
MAP_PRIVATE|MAP_FIXED|MAP_TEXT, 3, 0) = 0xFECC0000
mmap(0xFECE6000, 7704, PROT_READ|PROT_WRITE|PROT_EXEC, 
MAP_PRIVATE|MAP_FIXED|MAP_INITDATA, 3, 90112) = 0xFECE6000
munmap(0xFECD7000, 61440)                       = 0
memcntl(0xFECC0000, 7344, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0
close(3)                                        = 0
stat64("/usr/local/gcc/lib/libpthread.so.1", 0x08046FF0) Err#2 ENOENT
stat64("/lib/libpthread.so.1", 0x08046FF0)      = 0
resolvepath("/lib/libpthread.so.1", "/lib/libpthread.so.1", 1023) = 20
open("/lib/libpthread.so.1", O_RDONLY)          = 3
mmap(0xFEFB0000, 32768, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 
0xFEFB0000
munmap(0xFEFB3000, 20480)                       = 0
close(3)                                        = 0
stat64("/usr/local/gcc/lib/libc.so.1", 0x08046FF0) Err#2 ENOENT
stat64("/lib/libc.so.1", 0x08046FF0)            = 0
resolvepath("/lib/libc.so.1", "/lib/libc.so.1", 1023) = 14
open("/lib/libc.so.1", O_RDONLY)                = 3
mmap(0x00010000, 32768, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_ALIGN, 3, 0) = 
0xFEE20000
mmap(0x00010000, 1212416, PROT_NONE, 
MAP_PRIVATE|MAP_NORESERVE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFEB90000
mmap(0xFEB90000, 1105021, PROT_READ|PROT_EXEC, 
MAP_PRIVATE|MAP_FIXED|MAP_TEXT, 3, 0) = 0xFEB90000
mmap(0xFECAE000, 30311, PROT_READ|PROT_WRITE|PROT_EXEC, 
MAP_PRIVATE|MAP_FIXED|MAP_INITDATA, 3, 1105920) = 0xFECAE000
mmap(0xFECB6000, 4256, PROT_READ|PROT_WRITE|PROT_EXEC, 
MAP_PRIVATE|MAP_FIXED|MAP_ANON, -1, 0) = 0xFECB6000
munmap(0xFEC9E000, 65536)                       = 0
mmap(0x00000000, 4096, PROT_READ|PROT_WRITE|PROT_EXEC, 
MAP_PRIVATE|MAP_ANON, -1, 0) = 0xFEE80000
memcntl(0xFEB90000, 124304, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0
close(3)                                        = 0
stat64("/usr/local/gcc/lib/libc.so.1", 0x08046FF0) Err#2 ENOENT
stat64("/usr/local/gcc/lib/libc.so.1", 0x08046FF0) Err#2 ENOENT
stat64("/usr/local/gcc/lib/libnsl.so.1", 0x08046FF0) Err#2 ENOENT
stat64("/usr/local/gcc/lib/libc.so.1", 0x08046FF0) Err#2 ENOENT
stat64("/usr/local/gcc/lib/libc.so.1", 0x08046FF0) Err#2 ENOENT
stat64("/usr/local/gcc/lib/libaio.so.1", 0x08046FF0) Err#2 ENOENT
stat64("/lib/libaio.so.1", 0x08046FF0)          = 0
resolvepath("/lib/libaio.so.1", "/lib/libaio.so.1", 1023) = 16
open("/lib/libaio.so.1", O_RDONLY)              = 3
mmap(0xFEE20000, 32768, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 
0xFEE20000
mmap(0x00010000, 102400, PROT_NONE, 
MAP_PRIVATE|MAP_NORESERVE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFEB70000
mmap(0xFEB70000, 28661, PROT_READ|PROT_EXEC, 
MAP_PRIVATE|MAP_FIXED|MAP_TEXT, 3, 0) = 0xFEB70000
mmap(0xFEB87000, 1378, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_INITDATA, 3, 28672) = 0xFEB87000
mmap(0xFEB88000, 1600, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_ANON, -1, 0) = 0xFEB88000
munmap(0xFEB77000, 65536)                       = 0
memcntl(0xFEB70000, 5332, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0
close(3)                                        = 0
stat64("/usr/local/gcc/lib/libmd.so.1", 0x08046FF0) Err#2 ENOENT
stat64("/lib/libmd.so.1", 0x08046FF0)           = 0
resolvepath("/lib/libmd.so.1", "/lib/libmd.so.1", 1023) = 15
open("/lib/libmd.so.1", O_RDONLY)               = 3
mmap(0xFEE20000, 32768, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 
0xFEE20000
mmap(0x00010000, 126976, PROT_NONE, 
MAP_PRIVATE|MAP_NORESERVE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFEB50000
mmap(0xFEB50000, 56424, PROT_READ|PROT_EXEC, 
MAP_PRIVATE|MAP_FIXED|MAP_TEXT, 3, 0) = 0xFEB50000
mmap(0xFEB6E000, 552, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_INITDATA, 3, 57344) = 0xFEB6E000
munmap(0xFEB5E000, 65536)                       = 0
memcntl(0xFEB50000, 1464, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0
close(3)                                        = 0
stat64("/usr/local/gcc/lib/libc.so.1", 0x08046FF0) Err#2 ENOENT
stat64("/usr/local/gcc/lib/libm.so.2", 0x08046FF0) Err#2 ENOENT
stat64("/usr/local/gcc/lib/libc.so.1", 0x08046FF0) Err#2 ENOENT
stat64("/usr/local/gcc/lib/libc.so.1", 0x08046FF0) Err#2 ENOENT
stat64("/usr/local/gcc/lib/libc.so.1", 0x08046FF0) Err#2 ENOENT
stat64("/usr/local/gcc/lib/libc.so.1", 0x08046FF0) Err#2 ENOENT
stat64("/usr/local/gcc/lib/libc.so.1", 0x08046FF0) Err#2 ENOENT
mmap(0x00000000, 4096, PROT_READ|PROT_WRITE|PROT_EXEC, 
MAP_PRIVATE|MAP_ANON, -1, 0) = 0xFED40000
mmap(0x00010000, 24576, PROT_READ|PROT_WRITE|PROT_EXEC, 
MAP_PRIVATE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFECA0000
munmap(0xFEE20000, 32768)                       = 0
getcontext(0x080475C0)
getrlimit(RLIMIT_STACK, 0x080475B8)             = 0
getpid()                                        = 18047 [18046]
lwp_private(0, 1, 0xFECA2A40)                   = 0x000001C3
setustack(0xFECA2AA0)
sysconfig(_CONFIG_PAGESIZE)                     = 4096
sigfillset(0xFECB5DE0)                          = 0
stat64("/usr/local/gcc/lib/libc.so.1", 0x08046E60) Err#2 ENOENT
sysconfig(_CONFIG_SEM_VALUE_MAX)                = 2147483647
sysconfig(_CONFIG_STACK_PROT)                   = 7
sysi86(SI86FPSTART, 0xFECB6750, 0x0000133F, 0x00001F80) = 0x00000001
    Incurred fault #6, FLTBOUNDS  %pc = 0x081B9765
      siginfo: SIGSEGV SEGV_MAPERR addr=0x00000000
    Received signal #11, SIGSEGV [default]
      siginfo: SIGSEGV SEGV_MAPERR addr=0x00000000

And an ldd:

# ldd /usr/local/node.js/bin/node
        libkstat.so.1 =>         /lib/libkstat.so.1
        libumem.so.1 =>  /lib/libumem.so.1
        libsocket.so.1 =>        /lib/libsocket.so.1
        libnsl.so.1 =>   /lib/libnsl.so.1
        librt.so.1 =>    /lib/librt.so.1
        libstdc++.so.6 =>        /usr/local/gcc/lib/libstdc++.so.6
        libm.so.2 =>     /lib/libm.so.2
        libgcc_s.so.1 =>         /usr/local/gcc/lib/libgcc_s.so.1
        libpthread.so.1 =>       /lib/libpthread.so.1
        libc.so.1 =>     /lib/libc.so.1
        libmp.so.2 =>    /lib/libmp.so.2
        libmd.so.1 =>    /lib/libmd.so.1
        libscf.so.1 =>   /lib/libscf.so.1
        libaio.so.1 =>   /lib/libaio.so.1
        libdoor.so.1 =>  /lib/libdoor.so.1
        libuutil.so.1 =>         /lib/libuutil.so.1
        libgen.so.1 =>   /lib/libgen.so.1

It would be really great if someone will help me with this.
Thanks.

Eugene. 

-- 
Job Board: http://jobs.nodejs.org/
Posting guidelines: 
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 post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en

Reply via email to