On 2019-11-07 11:44, Shawn Wagner wrote:
... Just don't use strict c99 mode when compiling with gcc? Drop the -std
argument from your CFLAGS to use the default (gnu11 since gcc 5) or
explicitly use gnu99, which gives you that version of the C standard + gcc
extensions.

(Not that they have anything to do with the problem, but compiling with -O0
and -fno-builtin are strange unless you're planning on spending some
quality time in a debugger stepping through code, and -malign-double is
already the default on x86-64 so kind of pointless)


Debugger .. yes. That will happen and I build on a multitude of
platforms.

OKay so the code fails on Solaris sparc with c99 whereas in the recent
past it all builds fine :

libtool: compile: /opt/developerstudio12.6/bin/c99 -I/usr/local/include -D_TS_ERRNO -D_POSIX_PTHREAD_SEMANTICS -D_LARGEFILE64_SOURCE -Xc -m64 -xarch=sparc -g -errfmt=error -errshort=full -xstrconst -xildoff -xmemalign=8s -xnolibmil -xcode=pic32 -xregs=no%appl -xlibmieee -mc -ftrap=%none -xbuiltin=%none -xunroll=1 -xs -xdebugformat=dwarf -errtags=yes -errwarn=%none -erroff=%none -DSQLITE_OS_UNIX=1 -I. -I/usr/local/build/sqlite-src-3300100_Oracle_sparc64vii+.001/src -I/usr/local/build/sqlite-src-3300100_Oracle_sparc64vii+.001/ext/rtree -I/usr/local/build/sqlite-src-3300100_Oracle_sparc64vii+.001/ext/icu -I/usr/local/build/sqlite-src-3300100_Oracle_sparc64vii+.001/ext/fts3 -I/usr/local/build/sqlite-src-3300100_Oracle_sparc64vii+.001/ext/async -I/usr/local/build/sqlite-src-3300100_Oracle_sparc64vii+.001/ext/session -I/usr/local/build/sqlite-src-3300100_Oracle_sparc64vii+.001/ext/userauth -D_HAVE_SQLITE_CONFIG_H -DBUILD_sqlite -DNDEBUG -I/usr/local/include -DSQLITE_THREADSAFE=1 -DSQLITE_HAVE_ZLIB=1 -DUSE_TCL_STUBS=1 -c /usr/local/build/sqlite-src-3300100_Oracle_sparc64vii+.001/src/tclsqlite.c -KPIC -DPIC -o .libs/tclsqlite.o "/usr/local/build/sqlite-src-3300100_Oracle_sparc64vii+.001/src/tclsqlite.c", line 2346: error: undefined symbol: SQLITE_DBCONFIG_ENABLE_VIEW "/usr/local/build/sqlite-src-3300100_Oracle_sparc64vii+.001/src/tclsqlite.c", line 2346: error: non-constant initializer: op "NAME" "/usr/local/build/sqlite-src-3300100_Oracle_sparc64vii+.001/src/tclsqlite.c", line 2351: error: undefined symbol: SQLITE_DBCONFIG_TRIGGER_EQP "/usr/local/build/sqlite-src-3300100_Oracle_sparc64vii+.001/src/tclsqlite.c", line 2351: error: non-constant initializer: op "NAME" "/usr/local/build/sqlite-src-3300100_Oracle_sparc64vii+.001/src/tclsqlite.c", line 2352: error: undefined symbol: SQLITE_DBCONFIG_RESET_DATABASE "/usr/local/build/sqlite-src-3300100_Oracle_sparc64vii+.001/src/tclsqlite.c", line 2352: error: non-constant initializer: op "NAME" "/usr/local/build/sqlite-src-3300100_Oracle_sparc64vii+.001/src/tclsqlite.c", line 2353: error: undefined symbol: SQLITE_DBCONFIG_DEFENSIVE "/usr/local/build/sqlite-src-3300100_Oracle_sparc64vii+.001/src/tclsqlite.c", line 2353: error: non-constant initializer: op "NAME" "/usr/local/build/sqlite-src-3300100_Oracle_sparc64vii+.001/src/tclsqlite.c", line 2354: error: undefined symbol: SQLITE_DBCONFIG_WRITABLE_SCHEMA "/usr/local/build/sqlite-src-3300100_Oracle_sparc64vii+.001/src/tclsqlite.c", line 2354: error: non-constant initializer: op "NAME" "/usr/local/build/sqlite-src-3300100_Oracle_sparc64vii+.001/src/tclsqlite.c", line 2355: error: undefined symbol: SQLITE_DBCONFIG_LEGACY_ALTER_TABLE "/usr/local/build/sqlite-src-3300100_Oracle_sparc64vii+.001/src/tclsqlite.c", line 2355: error: non-constant initializer: op "NAME" "/usr/local/build/sqlite-src-3300100_Oracle_sparc64vii+.001/src/tclsqlite.c", line 2356: error: undefined symbol: SQLITE_DBCONFIG_DQS_DML "/usr/local/build/sqlite-src-3300100_Oracle_sparc64vii+.001/src/tclsqlite.c", line 2356: error: non-constant initializer: op "NAME" "/usr/local/build/sqlite-src-3300100_Oracle_sparc64vii+.001/src/tclsqlite.c", line 2357: error: undefined symbol: SQLITE_DBCONFIG_DQS_DDL "/usr/local/build/sqlite-src-3300100_Oracle_sparc64vii+.001/src/tclsqlite.c", line 2357: error: non-constant initializer: op "NAME" "/usr/local/build/sqlite-src-3300100_Oracle_sparc64vii+.001/src/tclsqlite.c", line 2855: error: undefined symbol: SQLITE_DIRECTONLY c99: acomp failed for /usr/local/build/sqlite-src-3300100_Oracle_sparc64vii+.001/src/tclsqlite.c
gmake: *** [Makefile:1029: tclsqlite.lo] Error 1



On Red Hat Enterprise Linux 7.4 the code actually does compile and then
core dumps with a segfault from with that same source file :

Time: walshared.test 24 ms
# WARNING: This next test takes around 12 seconds
gmake: *** [Makefile:1256: tcltest] Segmentation fault (core dumped)
boe13$ pwd
/opt/bw/build/sqlite-src-3300100_rhel_74_3.10.0-693.el7.x86_64.001
boe13$ find . | grep -i 'core'
./testdir/core.43494
boe13$
boe13$ file ./testdir/core.43494
./testdir/core.43494: ELF 64-bit LSB core file x86-64, version 1 (SYSV), SVR4-style, from './testfixture /opt/bw/build/sqlite-src-3300100_rhel_74_3.10.0-693.el7.x86_64.00', real uid: 16411, effective uid: 16411, real gid: 20002, effective gid: 20002, execfn: './testfixture', platform: 'x86_64'
boe13$ find . -type f -name testfixture -ls
473047 4720 -rwxr-xr-x 1 dclarke devl 4832936 Nov 7 16:51 ./testfixture
boe13$
boe13$ gdb ./testfixture ./testdir/core.43494
GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-100.el7
Copyright (C) 2013 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 "x86_64-redhat-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /opt/bw/build/sqlite-src-3300100_rhel_74_3.10.0-693.el7.x86_64.001/testfixture...done.
[New LWP 43494]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Core was generated by `./testfixture /opt/bw/build/sqlite-src-3300100_rhel_74_3.10.0-693.el7.x86_64.00'.
Program terminated with signal 11, Segmentation fault.
#0 0x000000000043a545 in tvfsFileControl (pFile=0x25b9070, op=20, pArg=0x7fff19a48378) at /opt/bw/build/sqlite-src-3300100_rhel_74_3.10.0-693.el7.x86_64.001/src/test_vfs.c:549
549       if( p->pScript && (p->mask&TESTVFS_FCNTL_MASK) ){
Missing separate debuginfos, use: debuginfo-install glibc-2.17-196.el7.x86_64 libgcc-4.8.5-16.el7.x86_64
(gdb) where
#0 0x000000000043a545 in tvfsFileControl (pFile=0x25b9070, op=20, pArg=0x7fff19a48378) at /opt/bw/build/sqlite-src-3300100_rhel_74_3.10.0-693.el7.x86_64.001/src/test_vfs.c:549 #1 0x0000000000468bfe in sqlite3OsFileControl (id=0x25b9070, op=20, pArg=0x7fff19a48378) at sqlite3.c:22475 #2 0x000000000047df2b in databaseIsUnmoved (pPager=0x25b8ef0) at sqlite3.c:54928 #3 0x000000000047dfc0 in sqlite3PagerClose (pPager=0x25b8ef0, db=0x1fdaf10) at sqlite3.c:54969
#4  0x0000000000489835 in sqlite3BtreeClose (p=0x21d2fa0) at sqlite3.c:66134
#5 0x000000000051409c in sqlite3LeaveMutexAndCloseZombie (db=0x1fdaf10) at sqlite3.c:157429 #6 0x0000000000513fbc in sqlite3Close (db=0x1fdaf10, forceZombie=0) at sqlite3.c:157372
#7  0x0000000000513fe0 in sqlite3_close (db=0x1fdaf10) at sqlite3.c:157385
#8  0x000000000045de8a in DbDeleteCmd (db=0x2026f68)
at /opt/bw/build/sqlite-src-3300100_rhel_74_3.10.0-693.el7.x86_64.001/src/tclsqlite.c:528 #9 0x00007fbca2e1a330 in Tcl_DeleteCommandFromToken (interp=0x1fb7658, cmd=0x1eb6158)
    at /opt/bw/build/nist/tcl8.7a1/generic/tclBasic.c:3184
#10 0x00007fbca2e1a179 in Tcl_DeleteCommand (interp=0x1fb7658, cmdName=0x2006748 "db")
    at /opt/bw/build/nist/tcl8.7a1/generic/tclBasic.c:3045
#11 0x00000000004617c2 in DbObjCmd (cd=0x2026f68, interp=0x1fb7658, objc=2, objv=0x20cae98) at /opt/bw/build/sqlite-src-3300100_rhel_74_3.10.0-693.el7.x86_64.001/src/tclsqlite.c:2219 #12 0x00007fbca2e1be2a in Dispatch (data=0x23aa390, interp=0x1fb7658, result=0)
    at /opt/bw/build/nist/tcl8.7a1/generic/tclBasic.c:4418
#13 0x00007fbca2e1beb7 in TclNRRunCallbacks (interp=0x1fb7658, result=0, rootPtr=0x0)
    at /opt/bw/build/nist/tcl8.7a1/generic/tclBasic.c:4451
#14 0x00007fbca2e1e815 in TclEvalObjEx (interp=0x1fb7658, objPtr=0x6161616161616161, flags=0, invoker=0x19fb178, word=0)
    at /opt/bw/build/nist/tcl8.7a1/generic/tclBasic.c:6018
#15 0x00007fbca2f26152 in SlaveEval (interp=0x19f72f8, slaveInterp=0x1fb7658, objc=1, objv=0x19fb1f0)
    at /opt/bw/build/nist/tcl8.7a1/generic/tclInterp.c:2826
#16 0x00007fbca2f22bac in NRInterpCmd (clientData=0x0, interp=0x19f72f8, objc=4, objv=0x19fb1d8)
    at /opt/bw/build/nist/tcl8.7a1/generic/tclInterp.c:885
#17 0x00007fbca2e1be2a in Dispatch (data=0x2384b80, interp=0x19f72f8, result=0)
    at /opt/bw/build/nist/tcl8.7a1/generic/tclBasic.c:4418
#18 0x00007fbca2e1beb7 in TclNRRunCallbacks (interp=0x19f72f8, result=0, rootPtr=0x20d31a8)
    at /opt/bw/build/nist/tcl8.7a1/generic/tclBasic.c:4451
#19 0x00007fbca2e1e815 in TclEvalObjEx (interp=0x19f72f8, objPtr=0x6161616161616161, flags=0, invoker=0x0, word=0)
    at /opt/bw/build/nist/tcl8.7a1/generic/tclBasic.c:6018
#20 0x00007fbca2e1e7ae in Tcl_EvalObjEx (interp=0x19f72f8, objPtr=0x6161616161616161, flags=0)
    at /opt/bw/build/nist/tcl8.7a1/generic/tclBasic.c:5999
#21 0x00007fbca2e42160 in Tcl_TimeObjCmd (dummy=0x0, interp=0x19f72f8, objc=2, objv=0x19fb000)
    at /opt/bw/build/nist/tcl8.7a1/generic/tclCmdMZ.c:4123
#22 0x00007fbca2e1be2a in Dispatch (data=0x2388cc0, interp=0x19f72f8, result=0)
    at /opt/bw/build/nist/tcl8.7a1/generic/tclBasic.c:4418
#23 0x00007fbca2e1beb7 in TclNRRunCallbacks (interp=0x19f72f8, result=0, rootPtr=0x0)
    at /opt/bw/build/nist/tcl8.7a1/generic/tclBasic.c:4451
#24 0x00007fbca2e1b708 in Tcl_EvalObjv (interp=0x19f72f8, objc=5, objv=0x19fa880, flags=2097168)
---Type <return> to continue, or q <return> to quit---
    at /opt/bw/build/nist/tcl8.7a1/generic/tclBasic.c:4181
#25 0x00007fbca2e1dbf6 in TclEvalEx (interp=0x19f72f8,
script=0x527de0 <zMainloop.11456> "if {[llength $argv]>=1} {\nset argv0 [lindex $argv 0]\nset argv [lrange $argv 1 end]\nsource $argv0\n} else {\nset line {}\nwhile {![eof stdin]} {\nif {$line!=\"\"} {\nputs -nonewline \"> \"\n} else {\nputs -nonewl"...,
    numBytes=430, flags=0, line=1, clNextOuter=0x0,
outerScript=0x527de0 <zMainloop.11456> "if {[llength $argv]>=1} {\nset argv0 [lindex $argv 0]\nset argv [lrange $argv 1 end]\nsource $argv0\n} else {\nset line {}\nwhile {![eof stdin]} {\nif {$line!=\"\"} {\nputs -nonewline \"> \"\n} else {\nputs -nonewl"...)
    at /opt/bw/build/nist/tcl8.7a1/generic/tclBasic.c:5320
#26 0x00007fbca2e1cfc4 in Tcl_EvalEx (interp=0x19f72f8,
script=0x527de0 <zMainloop.11456> "if {[llength $argv]>=1} {\nset argv0 [lindex $argv 0]\nset argv [lrange $argv 1 end]\nsource $argv0\n} else {\nset line {}\nwhile {![eof stdin]} {\nif {$line!=\"\"} {\nputs -nonewline \"> \"\n} else {\nputs -nonewl"..., numBytes=-1, flags=0) at /opt/bw/build/nist/tcl8.7a1/generic/tclBasic.c:4985
#27 0x00007fbca2e1fc68 in Tcl_GlobalEval (interp=0x19f72f8,
command=0x527de0 <zMainloop.11456> "if {[llength $argv]>=1} {\nset argv0 [lindex $argv 0]\nset argv [lrange $argv 1 end]\nsource $argv0\n} else {\nset line {}\nwhile {![eof stdin]} {\nif {$line!=\"\"} {\nputs -nonewline \"> \"\n} else {\nputs -nonewl"...)
    at /opt/bw/build/nist/tcl8.7a1/generic/tclBasic.c:6983
#28 0x00000000004658b5 in main (argc=4, argv=0x7fff19a49288)
at /opt/bw/build/sqlite-src-3300100_rhel_74_3.10.0-693.el7.x86_64.001/src/tclsqlite.c:4008
(gdb) quit
boe13$ head config.log
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.

It was created by sqlite configure 3.30.1, which was
generated by GNU Autoconf 2.69.  Invocation command line was

$ ./configure --prefix=/opt/bw --enable-shared --enable-static --enable-readline --enable-threadsafe

## --------- ##
## Platform. ##
boe13$

I may go back a revision or two and see if those build in the exact same
way that they did back in January this year.

Dennis

_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to