← Back to team overview

maria-discuss team mailing list archive

Re: Maria on Solaris X86


Hi Monty,

Sorry for the delay. I just got back from a vacation that didn't include computers or internet! :-)

On 3/10/2010 1:43 PM, Michael Widenius wrote:

Sorry, I had missed this email earlier...

"Jim" == Jim Grill<jimgrill@xxxxxxxxxxxx>  writes:
Jim>  Hello,
Jim>  I’m having trouble getting MariaDB 5.1.42 working on Solaris 10x86. I’ve
Jim>  tried both the Binary package (mariadb-5.1.42-solaris11-i386) and
Jim>  building from source (mariadb-5.1.42). I don't know if it's something in
Jim>  the binary package or source code, something goofy on my system, or
Jim>  something goofy with how I'm building it. I'm assuming the latter, but
Jim>  thought I might bring it up anyway just in case it might help others
Jim>  running Solaris. :-)

What version of Solaris do you have ?

What we are using is:
SunOS opensolaris 5.11 snv_101b i86pc i386 i86pc Solaris

Jim>  I can’t get the binary dist to startup. Here’s the error log from the
Jim>  binary dist (note the hostname missing from the error log name)…

Jim>  $ cat data/.err
Jim>  100212 09:54:33 mysqld_safe Starting mysqld daemon with databases from
Jim>  /data01/mydata/mariadb-bin-tst/data
Jim>  ld.so.1: mysqld: fatal: relocation error: file bin/mysqld: symbol
Jim>  strnlen: referenced symbol not found
Jim>  100212 09:54:33 mysqld_safe mysqld from pid file
Jim>  /data01/mydata/mariadb-bin-tst/mysql.pid ended

That is strange.

What does this say for you:

nm /lib/64/libc.so | grep strnlen

Here's what I get from nm, basically nothing:

/home/mysql/jgrill # /usr/xpg4/bin/nm /lib/64/libc.so | grep strnlen
/home/mysql/jgrill # /usr/ccs/bin/nm /lib/64/libc.so | grep strnlen
/home/mysql/jgrill #

I get:
000000000007aad8 T strnlen
(The important thing is the 'T' above).

You can verify which libraries your version is using by doing:

ldd mysqld
/home/mysql/jgrill # ldd /product01/mysql/mariadb-5.1.42-solaris11-i386/bin/mysqld
        libnsl.so.1 =>   /lib/64/libnsl.so.1
        libsocket.so.1 =>        /lib/64/libsocket.so.1
        libpthread.so.1 =>       /lib/64/libpthread.so.1
        libthread.so.1 =>        /lib/64/libthread.so.1
        libz.so.1 =>     /usr/lib/64/libz.so.1
        libdl.so.1 =>    /lib/64/libdl.so.1
        libmtmalloc.so.1 =>      /usr/lib/64/libmtmalloc.so.1
        librt.so.1 =>    /lib/64/librt.so.1
        libresolv.so.2 =>        /lib/64/libresolv.so.2
        libm.so.2 =>     /lib/64/libm.so.2
        libc.so.1 =>     /lib/64/libc.so.1
        libmp.so.2 =>    /lib/64/libmp.so.2
        libmd.so.1 =>    /lib/64/libmd.so.1
        libscf.so.1 =>   /lib/64/libscf.so.1
        libaio.so.1 =>   /lib/64/libaio.so.1
        libdoor.so.1 =>  /lib/64/libdoor.so.1
        libuutil.so.1 =>         /lib/64/libuutil.so.1
        libgen.so.1 =>   /lib/64/libgen.so.1

Jim>  I’m using SunStudio 12.1 to build from source. Here’s my configure and
Jim>  make:

Jim>  export PATH=/product01/sunstudio12.1/bin:${PATH}
Jim>  export LD_LIBRARY_PATH=/usr/lib:/usr/local/lib

Jim>  make distclean

Jim>  ASFLAGS="-m64" \
Jim>  CC="cc-5.0" \
Jim>  CFLAGS="-Xa -xstrconst -g -mt -D_FORTEC_ -m64" \
Jim>  CXX="CC" \
Jim>  CXXFLAGS="-noex -g -mt -D_FORTEC_ -m64" \
Jim>  LIBS=-lmtmalloc \
Jim>  ./configure \
Jim>  --prefix=/product01/mysql/mariadb-5.1.42 \
Jim>  --localstatedir=/product01/mysql/mariadb-5.1.42/data \
Jim>  --libexecdir=/product01/mysql/mariadb-5.1.42/bin \
Jim>  --with-extra-charsets=all \
Jim>  --enable-thread-safe-client \
Jim>  --enable-local-infile \
Jim>  --with-zlib-dir=bundled \
Jim>  --with-big-tables \
Jim>  --with-readline \
Jim>  --with-named-curses-libs=-lcurses \
Jim>  --enable-assembler \
Jim>  --enable-static \
Jim>  --enable-shared

Jim>  /usr/sfw/bin/gmake

Jim>  [SNIP]
Jim>  gmake[1]: Entering directory `/home/mysql/jgrill/mariadb-5.1.42/dbug'
Jim>  source='dbug.c' object='dbug.o' libtool=no \
Jim>  DEPDIR=.deps depmode=none /bin/bash ../depcomp \
Jim>  cc-5.0 -DHAVE_CONFIG_H -I. -I. -I../include -I../include -I../include
Jim>  -Xa -xstrconst -g -mt -D_FORTEC_ -m64 -DHAVE_RWLOCK_T -DUNIV_SOLARIS -c
Jim>  dbug.c
Jim>  source='sanity.c' object='sanity.o' libtool=no \
Jim>  DEPDIR=.deps depmode=none /bin/bash ../depcomp \
Jim>  cc-5.0 -DHAVE_CONFIG_H -I. -I. -I../include -I../include -I../include
Jim>  -Xa -xstrconst -g -mt -D_FORTEC_ -m64 -DHAVE_RWLOCK_T -DUNIV_SOLARIS -c
Jim>  sanity.c
Jim>  rm -f libdbug.a
Jim>  ar cru libdbug.a dbug.o sanity.o
Jim>  ranlib libdbug.a
Jim>  source='my_main.c' object='my_main.o' libtool=no \
Jim>  DEPDIR=.deps depmode=none /bin/bash ../depcomp \
Jim>  cc-5.0 -DHAVE_CONFIG_H -I. -I. -I../include -I../include -I../include
Jim>  -Xa -xstrconst -g -mt -D_FORTEC_ -m64 -DHAVE_RWLOCK_T -DUNIV_SOLARIS -c
Jim>  my_main.c
Jim>  source='factorial.c' object='factorial.o' libtool=no \
Jim>  DEPDIR=.deps depmode=none /bin/bash ../depcomp \
Jim>  cc-5.0 -DHAVE_CONFIG_H -I. -I. -I../include -I../include -I../include
Jim>  -Xa -xstrconst -g -mt -D_FORTEC_ -m64 -DHAVE_RWLOCK_T -DUNIV_SOLARIS -c
Jim>  factorial.c
Jim>  /bin/bash ../libtool --preserve-dup-deps --tag=CC --mode=link cc-5.0 -Xa
Jim>  -xstrconst -g -mt -D_FORTEC_ -m64 -DHAVE_RWLOCK_T -DUNIV_SOLARIS -o
Jim>  factorial my_main.o factorial.o libdbug.a ../mysys/libmysys.a
Jim>  ../strings/libmystrings.a -lpthread -lthread -lposix4 -lsocket -lnsl -lm
Jim>  -lmtmalloc -lpthread -lthread
Jim>  libtool: link: cc-5.0 -Xa -xstrconst -g -mt -D_FORTEC_ -m64
Jim>  -DHAVE_RWLOCK_T -DUNIV_SOLARIS -o factorial my_main.o factorial.o
Jim>  libdbug.a ../mysys/libmysys.a ../strings/libmystrings.a -lpthread
Jim>  -lthread -lposix4 -lsocket -lnsl -lm -lmtmalloc -lpthread -lthread -mt
Jim>  ld: warning: file libdbug.a ignored: unable to locate archive symbol table
Jim>  ld: warning: file ../mysys/libmysys.a ignored: unable to locate archive
Jim>  symbol table
Jim>  ld: warning: file ../strings/libmystrings.a ignored: unable to locate
Jim>  archive symbol table
Jim>  Undefined first referenced
Jim>  symbol in file
Jim>  my_thread_global_init my_main.o
Jim>  ld: fatal: Symbol referencing errors. No output written to factorial
Jim>  gmake[1]: *** [factorial] Error 1
Jim>  gmake[1]: Leaving directory `/home/mysql/jgrill/mariadb-5.1.42/dbug'
Jim>  gmake: *** [all-recursive] Error 1

The problem here is that, because of some unknown reason, your system
is compiling dbug before it's compiling strings and mysys.

Can you check if you have the file strings/libmystrings.a exits for
you ?
It did exist
If not, try to do:

cd strings

Does this work ?

Jim>  Here's my OS release information:
Jim>  # cat /etc/release
Jim>  Solaris 10 10/09 s10x_u8wos_08a X86
Jim>  Copyright 2009 Sun Microsystems, Inc. All Rights Reserved.
Jim>  Use is subject to license terms.
Jim>  Assembled 16 September 2009

Our version says:

OpenSolaris 2008.11 snv_101b_rc2 X86
            Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
                         Use is subject to license terms.
                            Assembled 19 November 2008

So it looks we have an incompatiblity between OpenSolaris and Solaris,
which could explain the binary problem.

However the compilations should 'just work'.
If you can help us figure out what's wrong, then we can try to fix the
configure/make script to solve it.
I'd be happy to help out if I can.
Jim>  Thanks for taking the time to read this far. :-) Any help would be
Jim>  greatly appreciated. I've tried everything I can think of and have spent
Jim>  many hours doing so. I'm pretty excited to try out XtraDB, PBXT, and, of
Jim>  course, MariaDB.

In the worst case, if you can give me access to your computer I may
be able to figure out what's wrong....
The only way in is VPN. We might be able to work something out with webex or something like that where I can give you control.