ID:               34515
 Comment by:       Arvids dot Godjuks at gmail dot com
 Reported By:      jaba at inbox dot lv
 Status:           No Feedback
 Bug Type:         MySQLi related
 Operating System: Debian GNU/Linux
 PHP Version:      5.0.5
 New Comment:

I'm having same issue with my aplication on my Windows home box.

I have Windows XP with SP3.

Apache 2.2.11:
Server version: Apache/2.2.11 (Win32)
Server built:   Dec 10 2008 00:10:06

PHP 5.2.9-1 (built: Mar  5 2009 20:02:28)

And latest MySQL GA -  5.1.33

I have latest PECL pack avaliable for windows.

I'm not really familiar with debugging on windows, so you will have to
tell me what to do to get debug info.


Previous Comments:
------------------------------------------------------------------------

[2005-11-04 01:00:02] php-bugs at lists dot php dot net

No feedback was provided for this bug for over a week, so it is
being suspended automatically. If you are able to provide the
information that was originally requested, please do so and change
the status of the bug back to "Open".

------------------------------------------------------------------------

[2005-10-28 10:28:16] mark at tranchant dot plus dot com

Another data point: mysql_fetch_assoc() (the mysql extension, not the
mysqli one) works fine with similar code and calls to add_assoc_zval.

I tried "forward-porting" some of the differences to the mysqli code
but just broke it completely.

Is there an easy way to add debug printing to a log file or syslog into
the module code? I want to explore the output values from
MYSQLI_FETCH_RESOURCE(), which is different from the ZEND_FETCH_RESOURCE
used in mysql.

------------------------------------------------------------------------

[2005-10-27 20:55:32] mark at tranchant dot plus dot com

Upgraded from gcc-3.3.2 to gcc-3.4.4, completely recompiled PHP-5.0.5.
No change: bug still there.

Also tried allocating a static buffer (char tmp[64];) and strcpy'ing
fields[i].name to it, then using that in the add_assoc calls. No joy
there, either.

------------------------------------------------------------------------

[2005-10-27 16:10:31] mark at tranchant dot plus dot com

Gah. I think I've got as far as my abilities allow.

Basically, if either add_assoc_zval or add_assoc_null are called with
anything other than a static string, crash. Even:

char *tmp;
...
sprintf(tmp, "hello");
add_assoc_zval(return_value, tmp, res);

fails, although:

add_assoc_zval(return_value, "hello", res);

does not, and $array['hello'] returns the first value as expected.
There is no issue with the mysql_fetch_fields() function: the failure
occurs even with that commented out.

I've traced the code path down to _zend_hash_add_or_update(), but I
don't know enough to see any problems on the way there.

***********************************

#define add_assoc_zval(__arg, __key, __value) add_assoc_zval_ex(__arg,
__key, strlen(__key)+1, __value)

***********************************

ZEND_API int add_assoc_zval_ex(zval *arg, char *key, uint key_len, zval
*value)
{
   return zend_symtable_update(Z_ARRVAL_P(arg), key, key_len, (void *)
&value, sizeof(zval *), NULL);
}

***********************************

static inline int zend_symtable_update(HashTable *ht, char *arKey, uint
nKeyLength, void *pData, uint nDa
taSize, void **pDest)                                   \
{
   HANDLE_NUMERIC(arKey, nKeyLength, zend_hash_index_update(ht, idx,
pData, nDataSize, pDest));
   return zend_hash_update(ht, arKey, nKeyLength, pData, nDataSize,
pDest);
}

***********************************

#define zend_hash_update(ht, arKey, nKeyLength, pData, nDataSize,
pDest) \
   _zend_hash_add_or_update(ht, arKey, nKeyLength, pData, nDataSize,
pDest, HASH_UPDATE ZEND_FILE_LINE_CC)

***********************************

------------------------------------------------------------------------

[2005-10-27 14:22:43] mark at tranchant dot plus dot com

I've just written a quick C program using the MySQL C API and can
confirm that mysql_fetch_fields() works fine. The problem does appear to
be with the PHP code. I'll keep looking.

------------------------------------------------------------------------

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/34515

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

Reply via email to