View Issue Details

IDProjectCategoryView StatusLast Update
0022577CommunityOCCT:Visualizationpublic2017-08-16 16:15
ReporterszyAssigned Tobugmaster  
PrioritynormalSeverityfeature 
Status closedResolutionfixed 
OSAll 
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
ListIterator
=================
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

Relationships

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 

Activities

kgv

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) {
    #ifdef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4
        // 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);
    #else
        #error "Atomic operation doesn't implemented for current platform!"
        return ++(*theValue);
    #endif
    }

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

kgv

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.

ycy

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
/QADisk/occttests/results/KAS/dev/products-651-opt_01062011/lin
See test cases in /QADisk/occttests/tests/ED
N.B. In order to launch testing case you can make use the following instructions
http://sbu.nnov.opencascade.com/maintenance/main_certification_te.html

bugmaster

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

Modified:
   trunk/src/AIS/AIS_GlobalStatus.cxx
   trunk/src/AIS/AIS_InteractiveContext.cxx
   trunk/src/Standard/Handle_Standard_Transient.cxx
   trunk/src/Standard/Standard_Atomic.hxx
   trunk/src/Standard/Standard_Transient_proto.hxx

Related Changesets

occt: master e33e7e78

2011-07-20 15:21:54

RLN and KGV


Committer: bugmaster Details Diff
OCC22577 Thread-safety/re-entrability improvements Affected Issues
0022577
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