View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0022577 | Community | OCCT:Visualization | public | 2011-06-06 20:27 | 2017-08-16 16:15 |
Reporter | Assigned To | bugmaster | |||
Priority | normal | Severity | feature | ||
Status | closed | Resolution | fixed | ||
OS | All | ||||
Target Version | 6.5.2 | Fixed in Version | 6.5.2 | ||
Summary | 0022577: Thread-safety/re-entrability improvements | ||||
Description | RLN 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 | ||||
Tags | No tags attached. | ||||
Test case number | Test case is not required | ||||
|
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. |
|
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. |
|
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 |
|
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 |
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 |
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 |
|
Test case number | => Test case is not required |
2011-11-25 11:39 |
|
Description Updated | |
2011-11-25 11:40 |
|
Note Edited: 0017618 | |
2011-12-05 11:23 |
|
Relationship added | child of 0022825 |
2012-01-17 18:36 |
|
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 |