View Issue Details

IDProjectCategoryView StatusLast Update
0033568CommunityOCCT:Releasepublic2024-01-19 17:21
ReporterStefanBruens Assigned Tobugmaster  
PrioritynormalSeveritymajor 
Status closedResolutionwon't fix 
PlatformLinuxOSopenSUSE Tumbleweed 
Product Version7.7.1 
Summary0033568: BIC Regression - exported symbol of XCAFDoc_ColorTool::GetColor(...) changed between 7.7.0 and 7.7.1
Descriptionhttps://git.dev.opencascade.org/gitweb/?p=occt.git;a=commitdiff;h=47263fa6a30894e7175208183eaefb263057699d#patch4

The former const member functions have become static member functions. With this change, any application/library may refuse to start when built with OCC 7.7.0, but trying to link at runtime to OCC 7.7.1/7.7.2.

See e.g. https://forum.freecad.org/viewtopic.php?t=77066
Steps To ReproduceBuild e.g. netgen with OCC 7.7.0
Update shared libraries to OCC 7.7.1 or later
-> application will refuse to start with an error like:

/usr/lib64/netgen/libnglib.so: undefined symbol: _ZNK17XCAFDoc_ColorTool8GetColorERK9TDF_LabelR14Quantity_Color
TagsNo tags attached.
Test case number

Activities

dpasukhi

2024-01-08 18:19

administrator   ~0114877

@StefanBruens OCCT do not garantee binary compatibility.
We ask you to full rebuild your application.

StefanBruens

2024-01-08 19:50

reporter   ~0114878

Actually, OCCT claims binary compatibility for the same major.minor version.

The BUILD_SOVERSION_NUMBERS is defaulted to "2", so the SOVERSION in the library only includes major and minor, but not micro version. ABI *must never* change for a given library name/version.

dpasukhi

2024-01-09 14:05

administrator   ~0114882

Currently we can't resolve this issue.
It is not possible to not change signature of functions and other stuff in OCCT.
It is possible only in case if there is a special high level API wrapper, but it is not a current case.
Ticket will be closed, because we can't fix it. We only be able to make changes into latest version for community (for technical support and development we create a separeted branch)

dpasukhi

2024-01-09 14:06

administrator   ~0114883

Dear bugmaster, please close the issue.
Not possible to fix.

StefanBruens

2024-01-09 14:57

reporter   ~0114884

> It is not possible to not change signature of functions and other stuff in OCCT.

In this case, incorrect - the signature could have been kept for the 7.7.x branch. There is no technical reason this has to be exported as a static method, even if the method only accesses static class data, i.e. no class members (i.e. behaves like a static method). On the call site, a dummy object can be used.

Changing the function signature (which is definitely a good cleanup) should only have happened on the 7.8 branch.

Issue History

Date Modified Username Field Change
2024-01-07 18:03 StefanBruens New Issue
2024-01-07 18:03 StefanBruens Assigned To => bugmaster
2024-01-08 18:19 dpasukhi Note Added: 0114877
2024-01-08 18:20 dpasukhi Assigned To bugmaster => StefanBruens
2024-01-08 18:20 dpasukhi Status new => feedback
2024-01-08 19:50 StefanBruens Note Added: 0114878
2024-01-09 14:05 dpasukhi Note Added: 0114882
2024-01-09 14:06 dpasukhi Assigned To StefanBruens => bugmaster
2024-01-09 14:06 dpasukhi Note Added: 0114883
2024-01-09 14:57 StefanBruens Note Added: 0114884
2024-01-19 17:21 vglukhik Status feedback => closed
2024-01-19 17:21 vglukhik Resolution open => won't fix