You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by Peter Rossbach <pr...@objektpark.de> on 2007/06/01 08:24:52 UTC

Re: svn commit: r543093 - in /tomcat/connectors/trunk/jk: native/common/jk_mt.h xdocs/miscellaneous/changelog.xml xdocs/webserver_howto/apache.xml

Hi Rainer,

patch works ;)

Thanks
Peter


Am 31.05.2007 um 19:09 schrieb Rainer Jung:

> Could you try to find out, how pthread_t is defined on OS X?
> Does the following patch help?
>
> Index: jk_util.c
> ===================================================================
> --- jk_util.c   (revision 542900)
> +++ jk_util.c   (working copy)
> @@ -1686,12 +1686,87 @@
>      pthread_getunique_np(&t, &tid);
>      return ((int)(tid.intId.lo & 0xFFFFFFFF));
>  #else
> -    int tid = (int)(t & 0xFFFF);
> +    int tid = ((int)t) & 0xFFFF;
>      return tid;
>  #endif /* AS400 */
>  }
>  #endif
>
>
> Regards,
>
> Rainer
>
> Peter Rossbach wrote:
>> Hi Rainer,
>> your _REENTRANT fix trigger a next MAC OS X problem:
>> eragon:~/workshop/tomcat-connectors-1.2.23-src/native peter$ make
>> Making all in common
>> /opt/local/share/apr-1/build/libtool --silent --mode=compile gcc - 
>> I/Users/peter/workshop/apache2/include -Wall -g -O2 -DHAVE_APR  -I/ 
>> opt/local/include/apr-1 -I/opt/local/include/apr-1 -Wall -DDARWIN - 
>> DSIGPROCMASK_SETS_THREAD_MASK -no-cpp-precomp -I /Library/Java/ 
>> Home/include -I /Library/Java/Home/include/ -c jk_ajp12_worker.c - 
>> o jk_ajp12_worker.lo
>> /opt/local/share/apr-1/build/libtool --silent --mode=compile gcc - 
>> I/Users/peter/workshop/apache2/include -Wall -g -O2 -DHAVE_APR  -I/ 
>> opt/local/include/apr-1 -I/opt/local/include/apr-1 -Wall -DDARWIN - 
>> DSIGPROCMASK_SETS_THREAD_MASK -no-cpp-precomp -I /Library/Java/ 
>> Home/include -I /Library/Java/Home/include/ -c jk_connect.c -o  
>> jk_connect.lo
>> /opt/local/share/apr-1/build/libtool --silent --mode=compile gcc - 
>> I/Users/peter/workshop/apache2/include -Wall -g -O2 -DHAVE_APR  -I/ 
>> opt/local/include/apr-1 -I/opt/local/include/apr-1 -Wall -DDARWIN - 
>> DSIGPROCMASK_SETS_THREAD_MASK -no-cpp-precomp -I /Library/Java/ 
>> Home/include -I /Library/Java/Home/include/ -c jk_msg_buff.c -o  
>> jk_msg_buff.lo
>> /opt/local/share/apr-1/build/libtool --silent --mode=compile gcc - 
>> I/Users/peter/workshop/apache2/include -Wall -g -O2 -DHAVE_APR  -I/ 
>> opt/local/include/apr-1 -I/opt/local/include/apr-1 -Wall -DDARWIN - 
>> DSIGPROCMASK_SETS_THREAD_MASK -no-cpp-precomp -I /Library/Java/ 
>> Home/include -I /Library/Java/Home/include/ -c jk_util.c -o  
>> jk_util.lo
>> jk_util.c: In function 'jk_gettid':
>> jk_util.c:1723: error: invalid operands to binary &
>> make[1]: *** [jk_util.lo] Error 1
>> make: *** [all-recursive] Error 1
>> testet with apache 2.2.4.
>> Regards
>> peter
>> Am 31.05.2007 um 11:28 schrieb rjung@apache.org:
>>> Author: rjung
>>> Date: Thu May 31 02:27:59 2007
>>> New Revision: 543093
>>>
>>> URL: http://svn.apache.org/viewvc?view=rev&rev=543093
>>> Log:
>>> Always build thread safe against Apache httpd 2.0/2.2
>>> (unless configure detects --enable-prefork).
>>> _REENTRANT flag for APR is not a safe threading detection
>>> for all platforms.
>>>
>>> Modified:
>>>     tomcat/connectors/trunk/jk/native/common/jk_mt.h
>>>     tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml
>>>     tomcat/connectors/trunk/jk/xdocs/webserver_howto/apache.xml
>>>
>>> Modified: tomcat/connectors/trunk/jk/native/common/jk_mt.h
>>> URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/ 
>>> native/common/jk_mt.h?view=diff&rev=543093&r1=543092&r2=543093
>>> ==================================================================== 
>>> ==========
>>> --- tomcat/connectors/trunk/jk/native/common/jk_mt.h (original)
>>> +++ tomcat/connectors/trunk/jk/native/common/jk_mt.h Thu May 31  
>>> 02:27:59 2007
>>> @@ -33,18 +33,10 @@
>>>  #define getpid()       ((int)GetThreadGroupID())
>>>  #endif
>>>
>>> -/*
>>> - * All WIN32 code is MT, UNIX code that uses pthreads is marked  
>>> by the POSIX
>>> - * _REENTRANT define.
>>> - */
>>> -#if defined (WIN32) || defined(_REENTRANT) || (defined(NETWARE)  
>>> && defined(__NOVELL_LIBC__))
>>>  #ifdef JK_PREFORK
>>>  #define _MT_CODE 0
>>>  #else
>>>  #define _MT_CODE 1
>>> -#endif
>>> -#else
>>> -#define _MT_CODE 0
>>>  #endif
>>>
>>>  /*
>>>
>>> Modified: tomcat/connectors/trunk/jk/xdocs/miscellaneous/ 
>>> changelog.xml
>>> URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/ 
>>> xdocs/miscellaneous/changelog.xml? 
>>> view=diff&rev=543093&r1=543092&r2=543093
>>> ==================================================================== 
>>> ==========
>>> --- tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml  
>>> (original)
>>> +++ tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml  
>>> Thu May 31 02:27:59 2007
>>> @@ -27,6 +27,10 @@
>>>    <br />
>>>    <subsection name="Native">
>>>      <changelog>
>>> +      <fix>
>>> +      Always build with thread support, unless flag --enable- 
>>> prefork
>>> +      is set during for configure. (rjung)
>>> +      </fix>
>>>        <update>
>>>        i5/OS (AS/400) V5R4 port where Apache 2.0 modules should  
>>> now use UTF8. (hgomez)
>>>        </update>
>>>
>>> Modified: tomcat/connectors/trunk/jk/xdocs/webserver_howto/ 
>>> apache.xml
>>> URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/ 
>>> xdocs/webserver_howto/apache.xml? 
>>> view=diff&rev=543093&r1=543092&r2=543093
>>> ==================================================================== 
>>> ==========
>>> --- tomcat/connectors/trunk/jk/xdocs/webserver_howto/apache.xml  
>>> (original)
>>> +++ tomcat/connectors/trunk/jk/xdocs/webserver_howto/apache.xml  
>>> Thu May 31 02:27:59 2007
>>> @@ -838,25 +838,26 @@
>>>  </screen>
>>>
>>>  <p>
>>> -If you want to build mod_jk for Apache 1.3 and 2.0/2.2, you should
>>> +If you want to build mod_jk for different version of Apache  
>>> httpd, like 1.3, 2.0 and 2.2,
>>> +you need to go through the full build process for each of them.
>>> +Please note, that httpd 2.0 and 2.2 modules are <b>not</b>  
>>> compatible. The mod_jk directory
>>> +used is "apache-2.0" in both cases, but you need to compile  
>>> separately.
>>>  <ul>
>>>  <li>
>>> -use configure and indicate Apache 1.3 apxs location (--with-apxs)
>>> +use configure and indicate the correct Apache httpd apxs  
>>> location (--with-apxs)
>>>  </li>
>>>  <li>
>>>  use make
>>>  </li>
>>>  <li>
>>> -copy the mod_jk binary to the apache modules location
>>> +copy the resulting mod_jk.so binary from the apache-1.3 or  
>>> apache-2.0 subdirectory
>>> +to the Apache httpd modules location.
>>>  </li>
>>>  <li>
>>> -make clean (to remove all previously compiled modules)
>>> +make clean (to remove all previously compiled object files)
>>>  </li>
>>>  <li>
>>> -use configure and indicate Apache 2.0/2.2 apxs location,
>>> -</li>
>>> -<li>
>>> -then make.
>>> +Start over with the apxs location for your next Apache httpd  
>>> version.
>>>  </li>
>>>  </ul>
>>>
>>> @@ -886,17 +887,14 @@
>>>  </tr>
>>>    <tr valign="top"><td>--enable-prefork</td>
>>>    <td>
>>> -In case you build mod_jk for a multi-threaded Apache 2.0/2.2 MPM  
>>> (Multi-Processing Module),
>>> +In case you build mod_jk for a multi-threaded Apache httpd  
>>> 2.0/2.2 MPM (Multi-Processing Module),
>>>  some areas of mod_jk code need to be synchronized to make it  
>>> thread-safe.
>>> -Configure autodetects, whether your are using a multi-threaded MPM.
>>> -For instance, the worker MPM is multi-threaded, the prefork MPM  
>>> is not.<br/>
>>> -Depending on how you build your Apache httpd, in some cases  
>>> configure
>>> -detects that it needs to build thread safe, although actually it  
>>> would not be necessary.
>>> -One such case is, if you build against Apache httpd with prefork  
>>> MPM,
>>> -and your APR (Apache Portable Runtime) libraries have been build  
>>> with thread support
>>> -(the output of "apxs -q EXTRA_CPPFLAGS" will contain "- 
>>> D_REENTRANT").<br/>
>>> +Because configure can not easily detect, whether your are using  
>>> a multi-threaded MPM,
>>> +mod_jk by default is always build thread-safe for Apache httpd  
>>> 2.0/2.2.
>>>  If you are sure, that your MPM is not multi-threaded, you can  
>>> use "--enable-prefork"
>>> -to force the removal of the synchronization code (thus  
>>> increasing performance a bit).</td>
>>> +to force the removal of the synchronization code (thus  
>>> increasing performance a bit).
>>> +For instance, the prefork MPM is not multi-threaded. For Apache  
>>> httpd 1.3
>>> +this flag will be set automatically.</td>
>>>  </tr>
>>>    <tr valign="top"><td>--enable-flock</td>
>>>    <td>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: dev-help@tomcat.apache.org
>
>


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org