extension crashing php 4.11/Apache 1.3
| From: | kkdesign at gmx dot net | Date: | Tue, 26 Feb 2002 15:00:11 +0000 |
| Subject: | extension crashing php 4.11/Apache 1.3 | ||
| Groups: | php.general | ||
| Request: | Send a blank email to php-general+get-86251@lists.php.net to get a copy of this message | ||
Hi!
If this is not the group to discuss the issues of writing extensions please let me know, but for now
I have a question:
What causes php to crash after 256 executions of my extension? / How can this be avoided?
The extension opens a file (on the server), writes some values into it and closes the file (yes, I
did not forget the fclose!).
I use the standard C file handling commands (fopen, ...). Additionally some mysql requests are done.
The whole extension works fine, it reads the right values, creates the file and stores the values in
a correct way. It's just
that it crashes after 256 executions.
With PHP used as a module it does not make a difference if the requests to the ext were made from
one or from several
pages. With PHP used as a cgi binary it crashes only if the requests were all done from one page.
The error messages are:
for the CGI binary:
"PHP caused an invalid page fault in PHP4TS.DLL"
for the module:
"APACHE caused an invalid page fault in PHP4TS.DLL"
In the first case APACHE continues to behave exactly like before the crash, and I get an Internal
Sever Error,
if the latter case APACHE crashes again and again until I press the stop button of the browser.
I would be grateful If you could tell me were the error lies,
Basti
PS: some more useful information:
About the environment:
Windows 98 SE,
PHP 4.1.1,
Apache 1.3.14,
MySql 3.23 beta,
The extension was compiled using MS Visual C++ 6.0
The browser is running on the same machine as the servers.
Some part of the code:
FILE * open_matfile(char * mode){
FILE * mf;
mf=fopen("d:\\studium\\pilanesberg\\homepage\\matrix.dat", mode);
if (!mf) {
zend_printf("Error opening matrix file in mode %s: %i.<br>",mode, ferror(mf));
}
return (mf);
}
int store_matrix(int dMat[][MAXI], int nMat[][MAXI], int nodes[], int numOfNodes){
FILE *matFile; //the matrix file
matFile=open_matfile("wb");
{...}
fclose(matFile);
return(0);
}
int load_matrix(int dMat[][MAXI], int nMat[][MAXI], int nodes[MAXI/2]){
FILE *matFile;
matFile=open_matfile("rb");
if (!matFile) {return(0);}
{...}
if (fclose(matFile)){
zend_printf("Error closing matrix file<br>");
return(0);
}
{...}
}