Bug #12339 Updated: Seg Fault in PHP under 2k /w ODBC and Globals (apparently)...

From: Date: Fri, 15 Feb 2002 17:26:07 +0000
Subject: Bug #12339 Updated: Seg Fault in PHP under 2k /w ODBC and Globals (apparently)...
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-371@lists.php.net to get a copy of this message
ID: 12339 Updated by: kalowsky@php.net Reported By: nlange@usb.com -Status: Feedback +Status: No Feedback Bug Type: ODBC related Operating System: Win2k PHP Version: 4.0.6 New Comment: No feedback was provided for this bug, so it is being suspended. If you are able to provide the information that was requested, please do so and change the status of the bug back to "Open". Previous Comments: ------------------------------------------------------------------------ [2002-01-21 09:19:26] kalowsky@php.net Please try the latest release. There have been a couple bug fixes in it regarding windows releases. ------------------------------------------------------------------------ [2001-08-20 12:04:04] sniper@php.net status -> open. ------------------------------------------------------------------------ [2001-07-24 10:49:17] nlange@usb.com Ok... Changing the connect to a pconnect, removing the out db connection (which was closed via odbc_close()) solves the problem.. so what exactly is going on I don't know... nick ------------------------------------------------------------------------ [2001-07-24 10:47:11] nlange@usb.com Sigh... I'm not so sure it's with globals anymore, I just knowit's with ODBC I had this problem once before and ended up re-writing and inlining all my code to get it go away. (side note, php cvs build for win2k from php4win project (approaching 4.0.7 release) exhibited the same problem) this particular file is also the only one to crash out of all the php files.. what makes it unique is the rather long subroutine but I've gotten a stack trace and some more information it dies with the following <b>Fatal error</b>: Call to undefined function: () in <b>C:\dev\isis\web\view_ user_info.php</b> on line <b>39</b><br> and it's 0Xc00000005, typically a buffer issue... 01222f10() ODBC32! 1f7d792e() ODBC32! 1f7d7866() PHP4TS! 100026a9() PHP! 00401a43() PHP! 0040207b() KERNEL32! 77e97d08() echo's removed, but assignments left in to give a general idea what's going on... Offending Trimmed Code ---------------------- function report($query, $tarray,$sarray, $empty_msg,$total,$is_last = 0, $zhead="") { $dmy = sizeof($tarray); //dummy var $elem_colspan = ((($total-($total%$dmy))/$dmy) == 1)?"":"COLSPAN =\"".(($total-($total%$dmy))/$dmy)."\""; //header on table 1 if (strlen($zhead)>0) { $CLASS = "CLASS=\"".$sarray['Header']['Class']."\""; $STYLE = "STYLE=\"".$sarray['Header']['Style']."\""; } foreach ($tarray as $header => $tname) { $CLASS = ($sarray[$header]['THClass'] != '')?"CLASS=\"".$sarray[$header]['THClass']."\"":"CLASS=\"sort\""; $STYLE = ($sarray[$header]['THStyle'] != '')?"STYLE=\"".$sarray[$header]['THStyle']."\"":""; } echo "</TR>\n"; $DBHX = odbc_connect("QUAL7000","QUAL_RPT","QUALRPT") or die (odbc_errormsg()); /********************** Dies Here *************************/ $sh = odbc_prepare($DBHX,$query) or die (odbc_errormsg().$query); odbc_execute($sh) or die (odbc_errormsg()); $rownum = 0; while(odbc_fetch_into($sh,$rownum,$rez)) { $trim_row($rez); reset($rez); foreach ($tarray as $header => $s) { $CLASS = ($sarray[$header]['TDClass'] != '')?"CLASS=\"".$sarray[$header]['TDClass']."\"":"CLASS=\"main\""; $STYLE = ($sarray[$header]['TDStyle'] != '')?"STYLE=\"".$sarray[$header]['TDStyle']." $x\"":"STYLE=\"$x\""; next($rez); } } if (odbc_num_rows($sh) == 0) { $c = 0; foreach ($tarray as $header => $s) { $CLASS = ($sarray[$header]['TDClass'] != '')?"CLASS=\"".$sarray[$header]['TDClass']."\"":"CLASS=\"main\""; $STYLE = ($sarray[$header]['TDStyle'] != '')?"STYLE=\"".$sarray[$header]['TDStyle']." $x\"":"STYLE=\"$x\""; if ((++$c) < sizeof($tarray)) { } else { } } echo '</TR>'; } odbc_free_result($sh); odbc_close($DBHX); } report($queryuso,$uasuso_trans,$uasuso_style,"User does not have access to any objects",sizeof($uasusa_trans)*2,1,"Object Access"); ------------------------------------------------------------------------ [2001-07-24 10:31:14] andy@php.net could you send in a short, yet more complete script than what you have given us now. ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/12339 -- Edit this bug report at http://bugs.php.net/?id=12339&edit=1

« previous php.bugs (#371) next »