ID:               20853
 User updated by:  [EMAIL PROTECTED]
 Reported By:      [EMAIL PROTECTED]
-Status:           Feedback
+Status:           Open
 Bug Type:         Reproducible crash
 Operating System: Linux
 PHP Version:      4.2.3
 New Comment:

You have seen the comments that it crashes with the value of 90 and
131? And have you tried it with values higher between 10.000 and
50.000? This is the range I need, because I have to
show a directory of a terabyte hd where all the files are in one
directory.

I'm currently downloading the latest php and try it on my own. I will
post the resutlts here again.

Thx,
Andi


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

[2002-12-06 03:37:00] [EMAIL PROTECTED]

Please try using this CVS snapshot:

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

I've just tried your example and it worked fine (using Sun's JDK
1.3.1).

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

[2002-12-06 03:24:45] [EMAIL PROTECTED]

there was not enough space for the rest of the code, so I add it here:

package de.slab.php2java;
public class SecondClass
{
        private String name;
        public SecondClass(String name)
        {
                this.name = name;
        }
        
        public String getName()
        {
                return name;
        }
}

test.php
------------------------
<html>
<body>

<?php
  $php2Java = new Java('de.slab.php2java.Php2Java');
  // next line crashes with size of 90
  $arr = $php2Java->getSecondClassArray( 89 );
  // next line crashes with size of 131
  $arr = $php2Java->getStrings( 130 );
?>
</body>
</html>

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

[2002-12-06 03:20:29] [EMAIL PROTECTED]

I have php compiled with 
'./configure' '--prefix=/usr/local/php'
'--with-apxs=/usr/local/apache/bin/apxs'
'--with-java=/usr/java/j2sdk1.4.1'

I have added two simple Java sources and a php script to reproduce the
error at the end of this description.
The error is a pointer error. Perhaps a variable gets a wrong pointer
or the memory is changed during the mapping process from java to php.

I've found out, that the error happens in th HashTable struct. Here is
a little extract from the logging I did in the zend_hash.c

ZEND_API int zend_hash_index_update_or_next_insert(HashTable *ht, ulong
h, void *pData, uint nDataSize, void **pDest, int flag)
{
...
  nIndex = h & ht->nTableMask;
  syslog(LOG_CONS,"zend nIndex    : %d",nIndex);
  syslog(LOG_CONS,"zend tablesize : %d",ht->nTableSize);
  syslog(LOG_CONS,"zend elementnr : %d",ht->nNumOfElements);
...

Dec  6 10:15:08 abi httpd: zend nIndex    : 0
Dec  6 10:15:08 abi httpd: zend tablesize : 8
Dec  6 10:15:08 abi httpd: zend elementnr : 0
---------------------------------------------------
Dec  6 10:15:08 abi httpd: zend nIndex    : 0
Dec  6 10:15:08 abi httpd: zend tablesize : 8
Dec  6 10:15:08 abi httpd: zend elementnr : 0
---------------------------------------------------
Dec  6 10:15:08 abi httpd: zend nIndex    : 0
Dec  6 10:15:08 abi httpd: zend tablesize : 8
Dec  6 10:15:08 abi httpd: zend elementnr : 0
---------------------------------------------------
Dec  6 10:15:08 abi httpd: zend nIndex    : 11
Dec  6 10:15:08 abi httpd: zend tablesize : 16
Dec  6 10:15:08 abi httpd: zend elementnr : 10
---------------------------------------------------
Dec  6 10:15:08 abi httpd: zend nIndex    : 0
Dec  6 10:15:08 abi httpd: zend tablesize : 8
Dec  6 10:15:08 abi httpd: zend elementnr : 0
---------------------------------------------------
Dec  6 10:15:09 abi httpd: zend nIndex    : 1
Dec  6 10:15:09 abi httpd: zend tablesize : 8
Dec  6 10:15:09 abi httpd: zend elementnr : 1
---------------------------------------------------
Dec  6 10:15:09 abi httpd: zend nIndex    : 12
Dec  6 10:15:09 abi httpd: zend tablesize : 16
Dec  6 10:15:09 abi httpd: zend elementnr : 11
---------------------------------------------------
Dec  6 10:15:09 abi httpd: zend nIndex    : 0
Dec  6 10:15:09 abi httpd: zend tablesize : 12
Dec  6 10:15:09 abi httpd: zend elementnr : 138994948

The last entry is produced by the call from java.c
  zend_hash_index_update(Z_OBJPROP_P(presult), 0, &handle, sizeof(pval
*), NULL);
in the method Java_net_php_reflect_setResultFromObject
and the nr in elementnr is the pointer to the next element!
I added some logging to the java class and saw that the number which is
given back from jni for storing the next element is exactly that
number!!! So it really seemst to be a pointer problem, but I can' t see
if it is a problem of java.c or a problem of the php-engine.

Hope this helps!
Andi



Php2Java.java
--------------
package de.slab.php2java;
public class Php2Java 
{
        public SecondClass[] getSecondClassArray( int nr )
        {
                SecondClass[] sc = new SecondClass[nr];
                for ( int i=0; i < nr; i++ )
                {
                        sc[i] = new SecondClass("SC "+i);
                }
                return sc;
        }
        
        public String[] getStrings( int nr )
        {
          String[] sc = new String[nr];
          for ( int i=0; i < nr; i++ )
          {
            sc[i] = "SC "+i;
          }
          return sc;
        }
}


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


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

Reply via email to