Re: SET_VAR_LONG() causes php to segfault?
| From: | Rasmus Lerdorf | Date: | Tue, 04 Jul 2000 06:28:36 +0000 |
| Subject: | Re: SET_VAR_LONG() causes php to segfault? | ||
| References: | 1 | Groups: | php.dev |
| Request: | Send a blank email to php-dev+get-23418@lists.php.net to get a copy of this message | ||
Aren't you actually trying to define some constants here?
Use the REGISTER_LONG_CONSTANT macro instead.
-Rasmus
On Mon, 3 Jul 2000 chrisv@b0rked.dhs.org wrote:
> I've been working at coding the sockets extension for PHP, and upon
> compiling and simply attempting to run the resulting PHP binary, PHP
> segfaults. The version of sockets.c/php_sockets.h that I'm working with is
> newer than the one currently in the repository.
>
> GDB backtrace:
> #0 pam_getenvlist (pamh=0x8138298) at pam_env.c:359
> #1 0x8093a8f in zend_hash_find (ht=0x8138298, arKey=0x8109509 "AF_UNIX",
> nKeyLength=8, pData=0xbffffa88) at zend_hash.c:803
> #2 0x80b4839 in php_minit_sockets (type=1, module_number=3) at
> sockets.c:193
> #3 0x80806f0 in zend_startup_module (module=0x8121f20) at zend_API.c:697
> #4 0x805e7bc in php_startup_extensions (ptr=0x8120764, count=8) at
> main.c:719
> #5 0x809ddef in php_startup_internal_extensions () at
> internal_functions.c:63
> #6 0x805ea35 in php_module_startup (sf=0x811bd00) at main.c:868
> #7 0x805cc31 in main (argc=1, argv=0xbffffbd4) at cgi_main.c:450
> #8 0x400b39d3 in __libc_start_main (main=0x805cb40 <main>, argc=1,
> argv=0xbffffbd4, init=0x805b86c <_init>,
> fini=0x80f2058 <_fini>, rtld_fini=0x4000ae30 <_dl_fini>,
> stack_end=0xbffffbcc) at ../sysdeps/generic/libc-start.c:92
>
> The code around the offending line in my code (frame #2):
>
> 185 PHP_MINIT_FUNCTION(sockets)
> 186 {
> 187 /* Remove comments if you have entries in php.ini
> 188 REGISTER_INI_ENTRIES();
> 189 */
> 190 le_destroy = register_list_destructors(destroy_fd_sets, NULL);
> 191 le_iov = register_list_destructors(destroy_iovec, NULL);
> 192
> 193 SET_VAR_LONG("AF_UNIX", AF_UNIX); <-- offending line
> 194 SET_VAR_LONG("AF_INET", AF_INET);
> 195 SET_VAR_LONG("SOCK_STREAM", SOCK_STREAM);
> 196 SET_VAR_LONG("SOCK_DGRAM", SOCK_DGRAM);
> 197 SET_VAR_LONG("SOCK_RAW", SOCK_RAW);
> 198 SET_VAR_LONG("SOCK_SEQPACKET", SOCK_SEQPACKET);
> 199 SET_VAR_LONG("SOCK_RDM", SOCK_RDM);
> 200 SET_VAR_LONG("MSG_OOB", MSG_OOB);
> 201 SET_VAR_LONG("MSG_WAITALL", MSG_WAITALL);
> 202 SET_VAR_LONG("MSG_PEEK", MSG_PEEK);
> 203
> 204 return SUCCESS;
> 205 }
>
> Does anyone have a clue about this particular problem, or can I simply not
> insert variables in the MINIT function?
>
> Chris
>
> ------
> give me life
> give me pain
> give me myself again
> -- tori amos - little earthquakes
>
>
>