View Issue Details

IDProjectCategoryView StatusLast Update
0022577CommunityOCCT:Visualizationpublic2017-08-16 16:15
Reporterszy Assigned Tobugmaster  
Status closedResolutionfixed 
Target Version6.5.2Fixed in Version6.5.2 
Summary0022577: Thread-safety/re-entrability improvements
DescriptionRLN contribution (fix290)
- Summary: Thread-safety/re-entrability improvements
- Detailed description:
        AIS_InteractiveContext.cxx, AIS_GlobalStatus.cxx - avoid using static
1.GlobalStatus.cxx: Removed static variables (iterators)
2.InteractiveContext: a) Atomic increment replaces ++
                      b)removed static iterators
TagsNo tags attached.
Test case numberTest case is not required


related to 0028933 feedbackoan Open CASCADE Configuration - CMake generates OCCT project without SSE options for 32-bit Linux target 
child of 0022825 closedabv Community Integration of contributions by Roman Lygin to OCCT 6.5.2 



2011-06-10 19:02

developer   ~0017616

Bug branch http://svn/svn/occt/branches/OCC22577_AISThreadSafety was reviewed.
- One file was committed with wrong end-lines.
- Replacement of unsafe incrementing with atomic operations is incomplete.
Static variable should be marked with volatile keyword and result of increment
operation should be retrieved within one operation. Current method
Standard_Atomic_Increment doesn't provide such interface and should be
extended with required functionality. Something like this:

    static int32_t Standard_Atomic_Increment(volatile int32_t* theValue) {
        // g++ compiler
        return __sync_add_and_fetch(theValue, 1);
    #elif (defined(_WIN32) || defined(__WIN32__))
        return InterlockedIncrement((volatile LONG* )theValue);
    #elif defined(__GNUC__)
        #error "Set at least -march=i486 for gcc compiler"
        return ++(*theValue);
        #error "Atomic operation doesn't implemented for current platform!"
        return ++(*theValue);

All remarks should be fixed and extra code review is required.


2011-06-22 14:14

developer   ~0017617

Standard_Atomic_* functions was improved to return operation result.
New syntax now used in Handle(Standard_Transient) and in
AIS_InteractiveContext thread-safety improvements.

Changes integrated to the BUG branch and ready for testing.


2011-07-20 14:50

tester   ~0017618

Last edited: 2011-11-25 11:40

Dear BugMaster,
SVN branch ( http://svn/svn/occt/branches/OCC22577_AISThreadSafety ) was
testing, test results were compared with KAS:dev:products-651-opt

Regressions were not found
It is not necessary to create test case for this issue

See results in /KASDev/OCCTtests/KAS/dev/ycy-products-2_08072011/lin
See reference results in
See test cases in /QADisk/occttests/tests/ED
N.B. In order to launch testing case you can make use the following instructions


2011-07-20 21:26

administrator   ~0017619

Integrated to occt repository

Author: inv
Date: 2011-07-20 19:21:54 +0400 (Wed, 20 Jul 2011)
New Revision: 8715


Related Changesets

occt: master e33e7e78

2011-07-20 15:21:54


Committer: bugmaster Details Diff
OCC22577 Thread-safety/re-entrability improvements Affected Issues
mod - src/AIS/AIS_GlobalStatus.cxx Diff File
mod - src/AIS/AIS_InteractiveContext.cxx Diff File
mod - src/Standard/Handle_Standard_Transient.cxx Diff File
mod - src/Standard/Standard_Atomic.hxx Diff File
mod - src/Standard/Standard_Transient_proto.hxx Diff File

Issue History

Date Modified Username Field Change
2011-07-05 18:11 kgv CC => kgv
2011-07-20 21:25 bugmaster Status closed => assigned
2011-07-20 21:25 bugmaster Resolution suspended => @0@
2011-07-20 21:25 bugmaster Assigned To bugmaster => kgv
2011-07-20 21:25 bugmaster Status assigned => resolved
2011-07-20 21:25 bugmaster Status resolved => tested
2011-07-20 21:26 bugmaster Status tested => verified
2011-07-29 15:30 bugmaster Fixed in Version EMPTY =>
2011-07-29 15:30 bugmaster Target Version => 6.5.2
2011-07-29 15:30 bugmaster Description Updated
2011-08-02 11:24 bugmaster Category OCCT:VIZ => OCCT:Visualization
2011-09-07 17:23 mkv Test case number => Test case is not required
2011-11-25 11:39 szy Description Updated
2011-11-25 11:40 szy Note Edited: 0017618
2011-12-05 11:23 abv Relationship added child of 0022825
2012-01-17 18:36 abv Assigned To kgv => Roman Lygin
2012-03-29 17:26 bugmaster Changeset attached => occt master e33e7e78
2017-08-16 16:15 kgv Relationship added related to 0028933