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
