Hi Guys, PHP_FUNCTION(proc_close) doesn't have a call to CloseHandle(proc->child), to close the process handle. This is causing a handle leak on Windows, and eventually brings the whole OS to it's knees.
Here's the fixed code snippet (there's a DIFF at the end of the file): ------------- cut here ------------- /* {{{ proto int proc_close(resource process) close a process opened by proc_open */ PHP_FUNCTION(proc_close) { zval *zproc; struct php_process_handle *proc; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zproc) == FAILURE) { RETURN_FALSE; } ZEND_FETCH_RESOURCE(proc, struct php_process_handle *, &zproc, -1, "process", le_proc_open); CloseHandle(proc->child);// ilya.1.0 20041110 zend_list_delete(Z_LVAL_P(zproc)); RETURN_LONG(FG(pclose_ret)); } /* }}} */ ------------- cut here ------------- Index: php-src/ext/standard/proc_open.c =================================================================== RCS file: /repository/php-src/ext/standard/proc_open.c,v retrieving revision 1.29 diff -r1.29 proc_open.c 90c90 < --- > 94c94 < --- > 96c96 < --- > 110c110 < --- > 116c116 < --- > 118c118 < --- > 137c137 < --- > 140c140 < --- > 144c144 < --- > 155c155 < --- > 173c173 < } --- > } 176c176 < --- > 216c216 < --- > 218c218 < --- > 222c222 < --- > 224c224 < --- > 228c228 < --- > 236c236 < --- > 243c243 < --- > 264c264 < --- > 266c266 < --- > 282c282 < --- > 324c324 < --- > 330c330 < --- > 332a333,334 > > /* should use this? if a handle leak occurs - should */ // > CloseHandle(proc->child); // ilya.1.0 20041110 336c338 < --- > 348c350 < --- > 354c356,358 < --- > > CloseHandle(proc->child); // ilya.1.0 20041110 > 374c378 < --- > 385c389 < --- > 387c391 < --- > 392c396 < --- > 394c398 < --- > 397c401 < --- > 433c437 < --- > 518c522 < } --- > } 520c524 < --- > 538c542 < --- > 621a626 > 630c635 < --- > 710c715 < --- > 714c719 < --- > 730c735 < --- > 732c737 < --- > 739c744 < --- > 745c750 < --- > 778c783 < --- > 800c805 < --- > 804c809 < --- > 924a930 > 930c936 < --- > -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php