Ticket #10464 (closed: fixed)

Opened 6 years ago

Last modified 5 years ago

Fix Column::isType on OS X with intel compiler

Reported by: Martyn Gigg Owned by: Martyn Gigg
Priority: critical Milestone: Release 3.3
Component: Framework Keywords:
Cc: Blocked By:
Blocking: #10282 Tester: Michael Wedel

Description (last modified by Martyn Gigg) (diff)

The EnginX calibrate system test is currently failing on OS X, it seems to be related to the API::Column::isType check

FrameworkManager-[Notice] Welcome to Mantid version 3.2.20141030.1713 - Manipulation and Analysis Toolkit for Instrument Data
FrameworkManager-[Notice] Please cite Mantid in your publications using: http://dx.doi.org/10.5286/Software/Mantid
EnginXCalibrateFull-[Notice] EnginXCalibrateFull started
LoadISISNexus-[Warning]  non-consequent spectra ID-s in the detectors block. Unexpected situation for the loader
LoadDetectorsGroupingFile-[Notice] LoadDetectorsGroupingFile started
LoadDetectorsGroupingFile-[Notice] LoadDetectorsGroupingFile successful, Duration 0.01 seconds
DeleteWorkspace-[Notice] DeleteWorkspace started (child)
DeleteWorkspace-[Notice] DeleteWorkspace successful, Duration 0.00 seconds
EnginXCalibrateFull-[Notice] EnginXCalibrateFull successful, Duration 37.98 seconds
EnginXCalibrate-[Notice] EnginXCalibrate started
LoadISISNexus-[Warning]  non-consequent spectra ID-s in the detectors block. Unexpected situation for the loader
LoadDetectorsGroupingFile-[Notice] LoadDetectorsGroupingFile started
LoadDetectorsGroupingFile-[Notice] LoadDetectorsGroupingFile successful, Duration 0.01 seconds
DeleteWorkspace-[Notice] DeleteWorkspace started (child)
DeleteWorkspace-[Notice] DeleteWorkspace successful, Duration 0.00 seconds
ApplyCalibration-[Error] Error in execution of algorithm ApplyCalibration:
ApplyCalibration-[Error] Type mismatch when creating a ColumnVector.
EnginXFocus-[Error] Error in execution of algorithm EnginXFocus:
EnginXFocus-[Error] Type mismatch when creating a ColumnVector.
EnginXFocus-[Error]   at line 36 in '/Applications/MantidPlot.app/plugins/python/algorithms/EnginXFocus.py'
EnginXFocus-[Error]   caused by line 70 in '/Applications/MantidPlot.app/plugins/python/algorithms/EnginXFocus.py'
EnginXCalibrate-[Error] Error in execution of algorithm EnginXCalibrate:
EnginXCalibrate-[Error] Type mismatch when creating a ColumnVector.
EnginXCalibrate-[Error]   at line 36 in '/Applications/MantidPlot.app/plugins/python/algorithms/EnginXFocus.py'
EnginXCalibrate-[Error]   caused by line 70 in '/Applications/MantidPlot.app/plugins/python/algorithms/EnginXFocus.py'
EnginXCalibrate-[Error]   at line 38 in '/Applications/MantidPlot.app/plugins/python/algorithms/EnginXCalibrate.py'
EnginXCalibrate-[Error]   caused by line 58 in '/Applications/MantidPlot.app/plugins/python/algorithms/EnginXCalibrate.py'
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/Users/builder/jenkins-linode/workspace/develop_systemtests_all/label/osx-10.8/StressTestFramework/stresstesting.py", line 194, in execute
    self.runTest()
  File "/Users/builder/jenkins-linode/workspace/develop_systemtests_all/label/osx-10.8/SystemTests/AnalysisTests/EnginXCalibrateTest.py", line 14, in runTest
    DetectorPositions = positions)
  File "/Applications/MantidPlot.app/Contents/MacOS/mantid/simpleapi.py", line 569, in algorithm_wrapper
    algm.execute()
RuntimeError: Type mismatch when creating a ColumnVector.
  at line 36 in '/Applications/MantidPlot.app/plugins/python/algorithms/EnginXFocus.py'
  caused by line 70 in '/Applications/MantidPlot.app/plugins/python/algorithms/EnginXFocus.py'
  at line 38 in '/Applications/MantidPlot.app/plugins/python/algorithms/EnginXCalibrate.py'
  caused by line 58 in '/Applications/MantidPlot.app/plugins/python/algorithms/EnginXCalibrate.py'}}}

Change History

comment:1 Changed 6 years ago by Martyn Gigg

  • Description modified (diff)

comment:2 Changed 6 years ago by Martyn Gigg

  • Status changed from new to assigned

comment:3 Changed 6 years ago by Martyn Gigg

Further investigation has revealed that this commit caused the problem. It is, however, not related to changes in API at all.

I believe it in fact simply reveals the well known fact that std::type_info objects comparisons cannot be trusted across shared library boundaries: http://www.boost.org/doc/libs/1_56_0/doc/html/boost_typeindex.html

comment:4 Changed 6 years ago by Martyn Gigg

  • Status changed from assigned to inprogress

Use platform agnostic test for type equality.

std::type_info objects are not guaranteed to compare correctly across shared library boundaries. Refs #10464

Changeset: ae22efd1ab056b9b3b3cb2bbd0fe8efb98aa771a

comment:5 Changed 6 years ago by Martyn Gigg

  • Status changed from inprogress to verify
  • Resolution set to fixed

This is being verified as pull request #58.

comment:6 Changed 6 years ago by Michael Wedel

  • Status changed from verify to verifying
  • Tester set to Michael Wedel

comment:7 Changed 6 years ago by Michael Wedel

  • Status changed from verifying to closed

Merge pull request #58 from mantidproject/bugfix/10464_fix_column_istype_osx

Use platform agnostic test for type equality in Column::isType

The previously failing system test is passing with these changes.

Full changeset: edbeafcfbbe935f8e72cef955537b6f149d70e5d

comment:8 Changed 5 years ago by Stuart Campbell

This ticket has been transferred to github issue 11306

Note: See TracTickets for help on using tickets.