I am compiling 3.6.11 from amalgamated sources on Solaris and I get a
Segmentation Fault whenever I type something at the shell. Pasted
below are some information which might be helpful. Does anyone else
see this error or have a workaround?

I get the same behavior when I run in gdb or just from the command
line. In both cases, as soon as I type anything at the shell, such as
".tables" or a create table command, it immediately crashes. I am
compiling statically and installing into my homedir, which I don't
imagine should cause any problems. If I compile shared, I get the same
error.

It looks like previous bugs (700, 1158 in particular) saw
memory-alignment-based crashes. In the traceback, you can see that
there is an assignment to a memory location like 0x10591c. This
indicates that it is not 16-byte aligned. If I add __attribute__
((__aligned__(16))) to the definition of prereqRight, I see a
different alignment, but still not correct (something like 0x10588c).

$ gcc -v
Using built-in specs.
Target: sparc-sun-solaris2.10
Configured with: ./configure --prefix=/opt/gcc/4.2.4
--enable-languages=c,c++,fortran,obj-c++,objc --disable-libgcj
--disable-nls --with-gmp=/usr/local --with-mpfr=/usr/local
--enable-threads=posix --with-cpu=ultrasparc
--host=sparc-sun-solaris2.10
Thread model: posix
gcc version 4.2.4
$ CFLAGS="-DSQLITE_DEBUG -g" ./configure --prefix=$HOME
--enable-static --disable-shared
$ make && make install
$ gdb ~/bin/sqlite3
..snip..
This GDB was configured as "sparc-sun-solaris2.9"...
(gdb) run test.sq3
Starting program: /home/fairway/a/enedev/bin/sqlite3 test.sq3
SQLite version 3.6.11
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .tables

Program received signal SIGSEGV, Segmentation fault.
0x000b8b20 in exprAnalyze (pSrc=0x102910, pWC=0x1058c4, idxTerm=1)
    at sqlite3.c:82139
82139       pTerm->prereqRight = exprTableUsage(pMaskSet, pExpr->pRight);
(gdb) list 82135,82143
82135                             | exprSelectTableUsage(pMaskSet,
pExpr->pSelect);
82136     }else if( op==TK_ISNULL ){
82137       pTerm->prereqRight = 0;
82138     }else{
82139       pTerm->prereqRight = exprTableUsage(pMaskSet, pExpr->pRight);
82140     }
82141     prereqAll = exprTableUsage(pMaskSet, pExpr);
82142     if( ExprHasProperty(pExpr, EP_FromJoin) ){
82143       Bitmask x = getMask(pMaskSet, pExpr->iRightJoinTable);
(gdb) print pTerm
$1 = (WhereTerm *) 0x105904
(gdb) print pTerm->prereqRight
$2 = 0
(gdb) print &pTerm->prereqRight
$3 = (Bitmask *) 0x10591c
(gdb) print pMaskSet
$4 = (WhereMaskSet *) 0x10597c
(gdb) print pExpr->pRight
$5 = (Expr *) 0x0
(gdb) print &pExpr->pRight
$6 = (Expr **) 0x1023d4
(gdb) print *pMaskSet
$7 = {n = 1, ix = {1, 0 <repeats 63 times>}}
(gdb) print *pExpr
$8 = {op = 19 '\023', affinity = 0 '\0', flags = 132, pColl = 0x0,
  pLeft = 0x102430, pRight = 0x0, pList = 0x0, token = {z = 0x0, dyn = 0,
    n = 0}, span = {
    z = 0xcd10a "name NOT LIKE 'sqlite_%'UNION ALL SELECT name FROM
sqlite_temp_master WHERE type IN ('table','view') ORDER BY 1", dyn =
0, n = 24},
  iTable = 0, iColumn = 0, pAggInfo = 0x0, iAgg = -1, iRightJoinTable = 0,
  pSelect = 0x0, pTab = 0x0, nHeight = 3}
(gdb)
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to