[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: tor 0.2.1.24 crashes on Sparc-Solaris10



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.