[Ace-users] Re: [ace-bugs] UUID_Generator

Douglas C. Schmidt schmidt at dre.vanderbilt.edu
Fri Aug 31 06:41:59 CDT 2007


Hi Wim,

Thanks for using the PRF.

> ACE VERSION: 5.5.8 / 10
> 
> HOST MACHINE and OPERATING SYSTEM:
>    WinXP
> 
> TARGET MACHINE and OPERATING SYSTEM, if different from HOST:
> COMPILER NAME AND VERSION (AND PATCHLEVEL):
> 
> THE $ACE_ROOT/ace/config.h FILE [if you use a link to a platform-
>    specific file, simply state which one]:
>    config-win32.h
> 
> 
> THE $ACE_ROOT/include/makeinclude/platform_macros.GNU FILE [if you
>    use a link to a platform-specific file, simply state which one
>    (unless this isn't used in this case, e.g., with Microsoft Visual
>    C++)]:
> 
> CONTENTS OF $ACE_ROOT/bin/MakeProjectCreator/config/default.features
>    (used by MPC when you generate your own makefiles):
>     ---
> 
> AREA/CLASS/EXAMPLE AFFECTED:
> 
>    DOES THE PROBLEM AFFECT:
>        COMPILATION?
>        LINKING
>        EXECUTION
>          
>        OTHER (please specify)?
> 
>    SYNOPSIS:
>        Double UUID generated in a multi threaded application.
> 
>    DESCRIPTION:
>         The method UUID_Generator::generateUUID is not thread safe in 
> respect to the combination uuid_state_.clockSequence
>         and timestamp.
>         The combination timestamp and clockSequence should be accessed 
> in a thread safe manner. The method
>         UUID_Generator::get_timestamp returns the timestamp thread safe, 
> but also modifies the uuid_state_.clockSequence.
>         The uuid_state_.clockSequence is accessed thread safe in 
> UUID_Generator::generateUUID, but could have been modified
>         between the moment get_timestamp is being done and the moment it 
> is being used.
> 
>    REPEAT BY:
> 
>    SAMPLE FIX/WORKAROUND:
>         Return the timestamp and clockSequence in a atomic manner via 
> the get_timestamp method. I added an other argument
>         to the get_timestamp.
>         void get_timestamp(UUID_time& timestamp, ACE_UINT16& clockSequence);
> 
>         Return the actual clockSequence in the get_timestamp method.

Could you please send the code that implements this and we'll add it to ACE!

Thanks,

        Doug



More information about the Ace-users mailing list