Am Dienstag 09 März 2010 schrieb Roger Dingledine: > On Tue, Mar 09, 2010 at 08:23:30PM +0100, Thomas.Hluchnik@xxxxxxxxxxxxx wrote: > > When starting tor it comes up but crashes within one minute. > > Try these: > http://freehaven.net/~arma/tor-0.2.1.24-dev.tar.gz > http://freehaven.net/~arma/tor-0.2.1.24-dev.tar.gz.asc Unfortunately this didnt help. But I succeeded in another way meanwhile: The crashing tor executables were built with gcc. The one who works right now, is from Your dev tarball, but built with Suns cc plus an interesting CFLAG. I found some info in the net (http://developers.sun.com/solaris/articles/manage_core_dump.html): The Sun Studio C/C++ compiler has the -xmemalign option, which can be used to adjust the behavior of the UltraSPARC CPU when there are unaligned memory addresses that can be determined at compile time. The -xmemalign option causes the compiler to generate additional load/store instructions for unaligned memory access. However, the -xmemalign option cannot handle unaligned memory access during runtime. If unaligned memory access happens during runtime, the developer needs to change the source code. So I did: make distclean export CC=cc export CFLAGS='-xmemalign' ./configure --enable-threads --prefix=/usr --sysconfdir=/etc --with-ssl-dir=/usr/local/ssl /usr/local/bin/make -j 2 here I got some very unusual output: source='directory.c' object='directory.o' libtool=no \ DEPDIR=.deps depmode=none /bin/bash ../../depcomp \ cc -DHAVE_CONFIG_H -I. -I../.. -DSHARE_DATADIR="\"/usr/share\"" -DLOCALSTATEDIR="\"/usr/var\"" -DBINDIR="\"/usr/bin\"" -I../../src/common -I/usr/local/ssl/include -xmemalign -g -O -c directory.c "directory.c", line 3231: warning: statement not reached source='dirserv.c' object='dirserv.o' libtool=no \ DEPDIR=.deps depmode=none /bin/bash ../../depcomp \ cc -DHAVE_CONFIG_H -I. -I../.. -DSHARE_DATADIR="\"/usr/share\"" -DLOCALSTATEDIR="\"/usr/var\"" -DBINDIR="\"/usr/bin\"" -I../../src/common -I/usr/local/ssl/include -xmemalign -g -O -c dirserv.c "dirserv.c", line 747: warning: identifier redeclared: dirserv_add_extrainfo current : function(pointer to struct extrainfo_t {struct signed_descriptor_t {..} cache_info, array[20] of char nickname, unsigned int bad_sig :1, pointer to char pending_sig, unsigned int pending_sig_len}, pointer to pointer to const char) returning enum was_router_added_t {ROUTER_AUTHDIR_REJECTS(-5), ROUTER_NOT_IN_CONSENSUS_OR_NETWORKSTATUS(-4), ROUTER_NOT_IN_CONSENSUS(-3), ROUTER_WAS_NOT_NEW(-2), ROUTER_BAD_EI(-1), ROUTER_ADDED_NOTIFY_GENERATOR(0), ROUTER_ADDED_SUCCESSFULLY(1)} previous: function(pointer to struct extrainfo_t {struct signed_descriptor_t {..} cache_info, array[20] of char nickname, unsigned int bad_sig :1, pointer to char pending_sig, unsigned int pending_sig_len}, pointer to pointer to const char) returning int : "dirserv.c", line 64 "dirserv.c", line 3254: warning: static function called but not defined: dirserv_add_extrainfo() Might this be the reason why a gcc built crashes on Solaris? The executable was created and runs now without crashing:-) Thomas
Attachment:
signature.asc
Description: This is a digitally signed message part.