#28537 [Opn-Fbk]: SELECT rowid, * FROM view crashes

2004-07-10 Thread wez
 ID:   28537
 Updated by:   [EMAIL PROTECTED]
 Reported By:  bhoc at tiscali dot ch
-Status:   Open
+Status:   Feedback
 Bug Type: SQLite related
 Operating System: any
 PHP Version:  5.0.0RC2
 New Comment:

Please try using this CVS snapshot:

  http://snaps.php.net/php5-latest.tar.gz
 
For Windows:
 
  http://snaps.php.net/win32/php5-win32-latest.zip




Previous Comments:


[2004-06-17 10:29:18] bhoc at tiscali dot ch

Same problem in 5.0.0RC3... :-(
-- 
Ben



[2004-05-27 13:19:53] bhoc at tiscali dot ch

Okay, I did manage to create a backtrace. A spare machine was
well-equipped. :)

$ gdb /usr/bin/php
GNU gdb 5.3
snip
(gdb) run selectcrash.php
Starting program: /usr/bin/php selectcrash.php
php: /usr/src/php-5.0.0RC2/ext/sqlite/libsqlite/src/select.c:659:
generateColumnTypes: Assertion `jpTabList-nSrc' failed.

Program received signal SIGABRT, Aborted.
0x400d1ac1 in kill () from /lib/libc.so.6
(gdb) bt
#0  0x400d1ac1 in kill () from /lib/libc.so.6
#1  0x400d16eb in raise () from /lib/libc.so.6
#2  0x400d3127 in abort () from /lib/libc.so.6
#3  0x400cad6a in __assert_fail () from /lib/libc.so.6
#4  0x080b004e in generateColumnTypes (pParse=0x0, pTabList=0x822f060,
pEList=0x822eb40)
at /usr/src/php-5.0.0RC2/ext/sqlite/libsqlite/src/select.c:662
#5  0x080b262e in sqliteSelect (pParse=0xbfffcce0, p=0x822ef58,
eDest=1,
iParm=0, pParent=0x0, parentTab=0, pParentAgg=0x0)
at /usr/src/php-5.0.0RC2/ext/sqlite/libsqlite/src/select.c:2219
#6  0x08099397 in yy_reduce (yypParser=0x82316a8, yyruleno=100) at
parse.y:270
#7  0x0809a2cb in sqliteParser (yyp=0x82316a8, yymajor=106, yyminor=
  {z = 0x0, dyn = 0, n = 3}, pParse=0x0) at parse.c:3946
#8  0x080b3648 in sqliteRunParser (pParse=0xbfffcce0,
zSql=0x401e9b68 select rowid, * from allinfo,
pzErrMsg=0xbfffcdcc)
at /usr/src/php-5.0.0RC2/ext/sqlite/libsqlite/src/tokenize.c:458
#9  0x080aa191 in sqliteMain (db=0x822b090,
zSql=0x401e9b68 select rowid, * from allinfo, xCallback=0,
pArg=0x0,
pzTail=0xbfffcdc8, ppVm=0xbfffcdd4, pzErrMsg=0xbfffcdcc)
at /usr/src/php-5.0.0RC2/ext/sqlite/libsqlite/src/main.c:631
#10 0x080aa306 in sqlite_compile (db=0x822b090,
zSql=0x401e9b68 select rowid, * from allinfo, pzTail=0xbfffcdc8,
ppVm=0xbfffcdd4, pzErrMsg=0xbfffcdcc)
at /usr/src/php-5.0.0RC2/ext/sqlite/libsqlite/src/main.c:696
#11 0x08095b27 in sqlite_query (object=0x0, db=0x401f05ac,
sql=0x401e9b68 select rowid, * from allinfo, sql_len=28, mode=0,
buffered=1, return_value=0x401e9c6c, prres=0x0)
at /usr/src/php-5.0.0RC2/ext/sqlite/sqlite.c:1464
#12 0x080961fa in zif_sqlite_query (ht=1075774892,
return_value=0x401e9c6c,
this_ptr=0x0, return_value_used=1)
at /usr/src/php-5.0.0RC2/ext/sqlite/sqlite.c:1669
#13 0x081779a6 in zend_do_fcall_common_helper
(execute_data=0xbfffd580,
opline=0x401f2ca4, op_array=0x822f4e8)
at /usr/src/php-5.0.0RC2/Zend/zend_execute.c:2699
#14 0x08177f03 in zend_do_fcall_handler (execute_data=0xbfffd580,
opline=0x401f2ca4, op_array=0x822f4e8)
at /usr/src/php-5.0.0RC2/Zend/zend_execute.c:2828
#15 0x08175032 in execute (op_array=0x822f4e8)
at /usr/src/php-5.0.0RC2/Zend/zend_execute.c:1391
#16 0x08177ab6 in zend_do_fcall_common_helper
(execute_data=0xbfffd760,
opline=0x401e97e4, op_array=0x401e8d68)
at /usr/src/php-5.0.0RC2/Zend/zend_execute.c:2728
#17 0x08177f03 in zend_do_fcall_handler (execute_data=0xbfffd760,
opline=0x401e97e4, op_array=0x401e8d68)
at /usr/src/php-5.0.0RC2/Zend/zend_execute.c:2828
#18 0x08175032 in execute (op_array=0x401e8d68)
at /usr/src/php-5.0.0RC2/Zend/zend_execute.c:1391
#19 0x0815b3e4 in zend_execute_scripts (type=8, retval=0x0,
file_count=3)
at /usr/src/php-5.0.0RC2/Zend/zend.c:1058
#20 0x0812b912 in php_execute_script (primary_file=0xbb00)
at /usr/src/php-5.0.0RC2/main/main.c:1630
#21 0x0817eec8 in main (argc=2, argv=0xbb94)
at /usr/src/php-5.0.0RC2/sapi/cgi/cgi_main.c:1562
#22 0x400bdd06 in __libc_start_main () from /lib/libc.so.6
(gdb) frame 4
#4  0x080b004e in generateColumnTypes (pParse=0x0, pTabList=0x822f060,
pEList=0x822eb40)
at /usr/src/php-5.0.0RC2/ext/sqlite/libsqlite/src/select.c:662
662   assert( iCol==-1 || (iCol=0  iColpTab-nCol) );

-- 
Ben



[2004-05-27 12:25:57] bhoc at tiscali dot ch

My currently available environment does not support creating
backtraces, unfortunately.
But I have put a simple php applet in
http://download.pentagroup.ch/phpbug-28537.tar.gz. It will create an
sqlite database, populate it, query it, roll over and die. Hope this
helps.
-- 
Ben



[2004-05-27 08:35:48] [EMAIL PROTECTED]

Thank you for this bug report. To 

#28537 [Opn-Fbk]: SELECT rowid, * FROM view crashes

2004-05-27 Thread derick
 ID:   28537
 Updated by:   [EMAIL PROTECTED]
 Reported By:  bhoc at tiscali dot ch
-Status:   Open
+Status:   Feedback
 Bug Type: SQLite related
 Operating System: any
 PHP Version:  5.0.0RC2
 New Comment:

Thank you for this bug report. To properly diagnose the problem, we
need a backtrace to see what is happening behind the scenes. To
find out how to generate a backtrace, please read
http://bugs.php.net/bugs-generating-backtrace.php

Once you have generated a backtrace, please submit it to this bug
report and change the status back to Open. Thank you for helping
us make PHP better.


Previous Comments:


[2004-05-27 01:44:37] bhoc at tiscali dot ch

before someone asks: same behaviour with
http://snaps.php.net/win32/php5-win32-200405262230.zip



[2004-05-27 01:10:36] bhoc at tiscali dot ch

Description:

select rowid, * from someview will crash php.
select rowid, * from sometable runs fine.

Result - cgi will crash, server will close the connection.

This was a bug (#364) in older sqlite versions:
http://www.sqlite.org/cvstrac/tktview?tn=364,16

It seems to have reappeared.

-- 
Ben 


Reproduce code:
---
function DumpTable($dbname, $tablename) {
  if ($db = sqlite_open($dbname)) {
$sql = select rowid, * from $tablename;
$res = sqlite_query($db, $sql);
echo table border=\1\\n;
while ($row = sqlite_fetch_array($res)) {
  $fieldnum = sqlite_num_fields($res);
  echo   tr;
  for ($i=0; $i$fieldnum; $i++) {
 echo td$row[$i]/td;
  }
  echo   /tr\n;
}
echo /table\n;
sqlite_close($db);
  } 
}


Expected result:

Nicely formatted output. :)
Works fine with a plain table; will fail with a view.

Actual result:
--
nothing, cgi crashes, server closes connection.
Tested under Windows XP and Linux





-- 
Edit this bug report at http://bugs.php.net/?id=28537edit=1