Folks, I'm trying to trace down a TCP_NODELAY problem and wanted to see if it exists on the latest connector mod_jk2. So I configured Apache 2.0.42, Tomcat 4.1.12 and downloaded jakarta-tomcat-connectors-4.1.12-src. I managed to use GNU's libtoolize to configure (./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-apr-lib=/usr/local/apache2/lib --with-apr-include=/usr/local/apache2/include --with-tomcat1=/usr/local/jakarta-tomcat-4.1.12).
The compilation was successful and I copied mod_jk2.so to /usr/local/apache2/modules. I configured httpd.conf to load the module and appended the following: <IfModule mod_jk2.c> JkSet "config.file" "/usr/local/apache2/conf/workers2.properties" </IfModule> I added a super simple workers2.properties file in the same dir and tried to start apache. I got a seg fault. Here's the stacktrace from Mac OS X default crash logger: Command: httpd PID: 853 Exception: EXC_BAD_ACCESS (0x0001) Codes: KERN_INVALID_ADDRESS (0x0001) at 0x736f0028 Thread 0 Crashed: #0 0x90001600 in strlen #1 0x900023e0 in vfprintf #2 0x90015ee0 in __sbprintf #3 0x900018a8 in vfprintf #4 0x900017ec in fprintf #5 0x0060fdbc in jk2_map_default_get (jk_map.c:97) <-- it's '97' because I added printf #6 0x0060df50 in jk2_env_createBean2 (jk_env.c:218) #7 0x0061ee0c in jk2_create_config (mod_jk2.c:351) #8 0x0002214c in ap_single_module_configure (config.c:1845) #9 0x00007ad8 in load_module (mod_so.c:337) #10 0x00020308 in invoke_cmd (config.c:749) #11 0x000213d0 in execute_now (config.c:1347) #12 0x00020a40 in ap_build_config_sub (config.c:944) #13 0x00020f68 in ap_build_config (config.c:1151) #14 0x000218f0 in ap_process_resource_config (config.c:1556) #15 0x000220e8 in ap_read_config (config.c:1834) #16 0x0000c184 in main (main.c:615) #17 0x00001ae0 in _start (crt.c:267) #18 0x00001960 in start Here's output with some printf statements inserted in jk_map.c: entering for threadMutex (no. maps: 25) 0: logger.file (°Z°Z°Z°Z°Z°Z) <- funny output is from fprintf(stderr,"%s", mPriv->values[i]) 1: logger.win32 (°Z°Z°Z°Z°Z) 2: workerEnv (°Z°ZA°Z°Z) 3: uriMap (°Z°Za°Z°Z) 4: uriEnv (°Z°ZA°Z°Z) 5: endpoint (°Z°ZA°Z°Z) 6: uri (°Z°ZA°Z°Z) 7: config (°Z°Z°Z°Z°Z°Z) 8: ajp13 (°Z°ZA°Z°Z) 9: lb (,) 10: status (°Z°Z°Z°Z°Z) 11: run (,) 12: channel.un (°Z°ZA°Z°Z) 13: channel.apr (°Z°ZA°Z°Z) 14: shm (°Z°Z°Z°Z°Z°Z) 15: channel.socket (°Z°ZA°Z°Z) 16: handler.response (°Z°Z°Z°Z°Z°Z) 17: handler.logon (°Z°Z°Z°Z°Z°Z) 18: threadMutex (°Z°Z°Z°Z°Z°Z) done for threadMutex entering for logger.apache2: (no. maps: 1) 0: threadMutex:0 () done for logger.apache2: ... ... entering for uri:/examples/* (no. maps: 19) 0: threadMutex:0 () 1: logger.apache2: () 2: logger.apache2 () 3: logger () 4: uriMap: () 5: uriMap () 6: config: () 7: config () 8: shm: () 9: shm () 10: workerEnv: () 11: workerEnv () 12: uri: () 13: uri () 14: threadMutex:1 () 15: threadMutex:2 () 16: threadMutex:3 () 17: ajp13:localhost:8009 () 18: channel.socket:localhost:8009 () done for uri:/examples/* entering for uri (no. maps: 26) 0: logger.file (°Z°Z°Z°Z°Z°Z) 1: logger.win32 (°Z°Z°Z°Z°Z) 2: workerEnv (°Z°ZA°Z°Z) 3: uriMap (°Z°Za°Z°Z) 4: uriEnv (°Z°ZA°Z°Z) 5: endpoint (°Z°ZA°Z°Z) 6: uri (°Z°ZA°Z°Z) done for uri entering for workerEnv (no. maps: 19) 0: threadMutex:0 () 1: logger.apache2: () 2: logger.apache2 () 3: logger () 4: uriMap: () 5: uriMap () 6: config: () 7: config () 8: shm: () 9: shm () 10: workerEnv: () 11: workerEnv () done for workerEnv entering for ver (no. maps: 1) 0: worker (ajp13:localhost:8009) done for ver [here it churns for a few seconds before segfaulting] bin/apachectl: line 87: 853 Segmentation fault $HTTPD -k $ARGV Anyone has a clue on what could be wrong? Just pointers would help. I tried following the stack trace but am temporarily thrown off by how jk2_env_createBean2() gets to jk2_map_default_get(), especially the second parameter's type. It seems to be casted from (char *) to (jk_map_t *), which is kind of weird. Appreciate it. Han Ming #------------------------ workers2.properties -------------------------------- # Shared memory handling. Needs to be set. [shm] file=/usr/local/apache2/logs/shm.file size=1048576 # Example socket channel, explicitly set port and host. [channel.socket:localhost:8009] port=8009 host=127.0.0.1 #keepalive=1 # define the worker [ajp13:localhost:8009] # channel=channel.un:/usr/local/tomcat/work/jk2.socket # To use the TCP/IP socket instead, just comment out the above # line, and uncomment the one below channel=channel.socket:localhost:8009 # Announce a "status" worker [status:status] # Uri mapping [uri:/examples/*] worker=ajp13:localhost:8009 #worker=ajp13:/usr/local/tomcat/work/jk2.socket [uri:/jkstatus/*] worker=status:status #---- end of workers2.properties -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>