summaryrefslogtreecommitdiff
path: root/sapi/isapi/php4isapi.c
diff options
context:
space:
mode:
authorShane Caraveo <shane@php.net>2000-03-19 17:59:05 +0000
committerShane Caraveo <shane@php.net>2000-03-19 17:59:05 +0000
commit0bf6633452aa2b91b8af7b3584177d5e178e1798 (patch)
treebbb0e6e81f17a2849de8bed0eb2f2dc81ee44fec /sapi/isapi/php4isapi.c
parent90ad09dc1dc3fd091585d421f9173377129b22b4 (diff)
downloadphp-git-0bf6633452aa2b91b8af7b3584177d5e178e1798.tar.gz
just a little more detail in exception report
Diffstat (limited to 'sapi/isapi/php4isapi.c')
-rw-r--r--sapi/isapi/php4isapi.c20
1 files changed, 15 insertions, 5 deletions
diff --git a/sapi/isapi/php4isapi.c b/sapi/isapi/php4isapi.c
index 3c2e049b00..1200064fb9 100644
--- a/sapi/isapi/php4isapi.c
+++ b/sapi/isapi/php4isapi.c
@@ -504,6 +504,13 @@ static void my_endthread()
#endif
}
+// ___except can only call a function, so we have to do this
+// to retrieve the pointer.
+BOOL exceptionhandler(LPEXCEPTION_POINTERS *e,LPEXCEPTION_POINTERS ep)
+{
+ *e=ep;
+ return TRUE;
+}
DWORD WINAPI HttpExtensionProc(LPEXTENSION_CONTROL_BLOCK lpECB)
{
@@ -513,6 +520,7 @@ DWORD WINAPI HttpExtensionProc(LPEXTENSION_CONTROL_BLOCK lpECB)
CLS_FETCH();
ELS_FETCH();
PLS_FETCH();
+ LPEXCEPTION_POINTERS e;
if (setjmp(EG(bailout))!=0) {
php_request_shutdown(NULL);
@@ -532,8 +540,10 @@ DWORD WINAPI HttpExtensionProc(LPEXTENSION_CONTROL_BLOCK lpECB)
if (SG(request_info).cookie_data) {
efree(SG(request_info).cookie_data);
}
- } __except(EXCEPTION_EXECUTE_HANDLER) {
+ } __except(exceptionhandler(&e,GetExceptionInformation())) {
+// } __except(EXCEPTION_EXECUTE_HANDLER) {
#ifdef PHP_WIN32
+ char buf[1024];
if (_exception_code()==EXCEPTION_STACK_OVERFLOW) {
LPBYTE lpPage;
static SYSTEM_INFO si;
@@ -562,17 +572,17 @@ DWORD WINAPI HttpExtensionProc(LPEXTENSION_CONTROL_BLOCK lpECB)
}
CG(unclean_shutdown)=1;
- php_isapi_report_exception("Stack overflow", sizeof("Stack overflow")-1 SLS_CC);
+ _snprintf(buf,sizeof(buf)-1,"PHP has encountered a Stack overflow");
} else if (_exception_code()==EXCEPTION_ACCESS_VIOLATION) {
- php_isapi_report_exception("Access violation", sizeof("Access violation")-1 SLS_CC);
+ _snprintf(buf,sizeof(buf)-1,"PHP has encountered an Access Violation at %p",e->ExceptionRecord->ExceptionAddress);
my_endthread();
} else {
- php_isapi_report_exception("Unknown fatal exception", sizeof("Unknown fatal exception")-1 SLS_CC);
+ _snprintf(buf,sizeof(buf)-1,"PHP has encountered an Unhandled Exception Code %d at %p",e->ExceptionRecord->ExceptionCode , e->ExceptionRecord->ExceptionAddress);
my_endthread();
}
+ php_isapi_report_exception(buf, strlen(buf) SLS_CC);
#endif
}
-
__try {
php_request_shutdown(NULL);
} __except(EXCEPTION_EXECUTE_HANDLER) {