[prev in list] [next in list] [prev in thread] [next in thread] 

List:       xerces-c-dev
Subject:    Re: Thread Safety Requirements on Xerces Transcoders?
From:       James Berry <james () jberry ! us>
Date:       2004-02-27 14:21:38
Message-ID: 413791D2-6930-11D8-B171-000393B2AC1A () jberry ! us
[Download RAW message or body]


On Feb 27, 2004, at 4:03 AM, Jeroen N. Witmond wrote:

>> Yes, I always assumed this (and usually, the LCP transcoder is just a
>> wrapper for some OS-specific API, with no fields defined in the class
>> definition).
>
> Yes, but this is based on the assumption that the implementation of the
> OS-specific API is re-entrant. And in Xerces. I have reason to doubt 
> that
> this assumption is sound.
>
> For instance, a number of files in directory
> xerces_c/src/xercesc/util/Transcoders/ refer to wcstombs(). On my RH9
> system, the man page for wcstombs contains the following NOTE: "The
> function  wcsrtombs  provides  a thread safe interface to the same
> functionality". According to the man pages, the difference between 
> these
> functions is that wcsrtombs is passed an additional argument "mbstate_t
> *ps", with the following comments: "In both of the above cases, if ps 
> is a
> NULL pointer, a static anonymous state only known to the wcsrtombs
> function is used instead. Passing NULL as ps is not multi-thread 
> safe.".
> My guess is that passing NULL for ps is what wcstombs (without the 'r')
> does, making it non-reentrant.

Good point, and a good question for maintainers of the various 
transcoders, of which I am one (Mac).

I only recently stumbled onto the fact that the LCP transcoder seems to 
require re-entrancy, and am considering adding a mutex to it in the Mac 
implementation. The Mac implementation very specifically calls into 
objects that maintain state, and therefore are not reentrant.

I would like to ask other committers (and users) to review the 
reentrancy of their LCP transcoders, and/or the underlying routines 
they call. We should probably make specific the requirement that they 
are to be reentrant, or else change the global usage pattern in 
XMLString and DOMString.

James.


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

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic