MantisBT
Mantis Bug Tracker Workflow

View Issue Details Jump to Notes ] Related Changesets ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0022577Community[OCCT] OCCT:Visualizationpublic2011-06-06 20:272017-08-16 16:15
Reporterszy 
Assigned Tobugmaster 
PrioritynormalSeverityfeature 
StatusclosedResolutionfixed 
PlatformOSAllOS Version
Product Version 
Target Version[OCCT] 6.5.2Fixed in Version[OCCT] 6.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
Attached Files

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

-  Notes
(0017616)
kgv (developer)
2011-06-10 19:02

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.
(0017617)
kgv (developer)
2011-06-22 14:14

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.
(0017618)
ycy (tester)
2011-07-20 14:50
edited on: 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 [^]

(0017619)
bugmaster (administrator)
2011-07-20 21:26

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
Timestamp: 2011-07-20 15:21:54
Author: RLN and KGV
Committer: bugmaster
Details ] Diff ]
OCC22577 Thread-safety/re-entrability improvements
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 View Revisions
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 View Revisions
2011-11-25 11:40 szy Note Edited: 0017618 View Revisions
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


Copyright © 2000 - 2018 MantisBT Team
Powered by Mantis Bugtracker