Ticket #5712 (closed: fixed)
Random crashes when running SimulateConvolvedResolutionModel
Reported by: | Martyn Gigg | Owned by: | Martyn Gigg |
---|---|---|---|
Priority: | critical | Milestone: | Release 2.3 |
Component: | Mantid | Keywords: | |
Cc: | Blocked By: | ||
Blocking: | Tester: | Nick Draper |
Description
I'm seeing occasional crashes with the SimulateConvolvedResolutionModel algorithm. It doesn't seem to happen in the console it seems more prone to happen in MantidPlot
Change History
comment:2 Changed 8 years ago by Martyn Gigg
Wrap single value log cache in CRITICAL section. Refs #5712
Calling the getPropertyAsSingleValue from a multi-threaded loop could cause a crash if the cache is updated without blocking.
Changeset: 1f83fb5e6e5d728f96dddc6d0e2edb0813121dcf
comment:3 Changed 8 years ago by Nick Draper
- Milestone changed from Release 2.2 to Release 2.3
Moved at the end of release 2.2
comment:4 Changed 8 years ago by Martyn Gigg
- Status changed from accepted to verify
- Resolution set to fixed
comment:5 Changed 8 years ago by Martyn Gigg
Wrap single value log cache in CRITICAL section. Refs #5712
Calling the getPropertyAsSingleValue from a multi-threaded loop could cause a crash if the cache is updated without blocking.
Changeset: 1f83fb5e6e5d728f96dddc6d0e2edb0813121dcf
comment:6 Changed 8 years ago by Martyn Gigg
Wrap single value log cache in CRITICAL section. Refs #5712
Calling the getPropertyAsSingleValue from a multi-threaded loop could cause a crash if the cache is updated without blocking.
Changeset: 1f83fb5e6e5d728f96dddc6d0e2edb0813121dcf
comment:7 Changed 8 years ago by Nick Draper
- Status changed from verify to verifying
- Tester set to Nick Draper
comment:8 Changed 8 years ago by Nick Draper
Tested with the following script: It performs 20 simulations back to back
def create_cuboid_xml(xlength,ylength,zlength): xml = """<cuboid id="sample0"> <left-front-bottom-point x="%(xpt)f" y="-%(ypt)f" z="-%(zpt)f" /> <left-front-top-point x="%(xpt)f" y="-%(ypt)f" z="%(zpt)f" /> <left-back-bottom-point x="-%(xpt)f" y="-%(ypt)f" z="-%(zpt)f" /> <right-front-bottom-point x="%(xpt)f" y="%(ypt)f" z="-%(zpt)f" /> </cuboid> <algebra val="sample0" /> """ return xml % {"xpt": xlength/2.0,"ypt":ylength/2.0,"zpt":zlength/2.0} ei = 300. bins = [-30,3,279] temperature = 6. chopper_speed = 600. # Oriented lattice & goniometer. alatt = 5.57 blatt = 5.51 clatt = 12.298 uvec = [9.700000e-03,9.800000e-03,9.996000e-01] vvec = [9.992000e-01,-3.460000e-02,-4.580000e-02] omega = 0.0 alpha = 0.0 beta = 0.0 gamma = 0.0 # sample dimensions sx = 0.05 # Perp sy = 0.025 # Up direction sz = 0.04 # Beam direction # Crystal mosaic eta_sig = 4.0 fake_data = CreateSimulationWorkspace(Instrument='MERLIN', BinParams=bins,UnitX='DeltaE', DetectorTableFilename='MER06398.raw') ## ## Required log entries, can be taken from real ones by placing an instrument parameter of the same ## name pointing to the log name ## AddSampleLog(Workspace=fake_data, LogName='Ei',LogText=str(ei), LogType="Number") AddSampleLog(Workspace=fake_data, LogName='temperature_log',LogText=str(temperature), LogType="Number") AddSampleLog(Workspace=fake_data, LogName='chopper_speed_log',LogText=str(chopper_speed), LogType="Number") AddSampleLog(Workspace=fake_data, LogName='eta_sigma',LogText=str(eta_sig), LogType="Number") ## ## Sample shape ## CreateSampleShape(InputWorkspace=fake_data, ShapeXML=create_cuboid_xml(sx,sy,sz)) ## ## Chopper & Moderator models. ## CreateModeratorModel(Workspace=fake_data,ModelType='IkedaCarpenterModerator', Parameters="TiltAngle=32,TauF=2.7,TauS=0,R=0") CreateChopperModel(Workspace=fake_data,ModelType='FermiChopperModel', Parameters="AngularVelocity=chopper_speed_log,ChopperRadius=0.049,SlitThickness=0.0023,SlitRadius=1.3,Ei=Ei,JitterSigma=0.0") ## ## UB matrix ## SetUB(Workspace=fake_data,a=alatt,b=blatt,c=clatt,u=uvec,v=vvec) ## ## Sample rotation. Simulate 1 run at zero degrees psi ## psi = 0.0 AddSampleLog(Workspace=fake_data,LogName='psi',LogText=str(psi),LogType='Number') SetGoniometer(Workspace=fake_data,Axis0="psi,0,1,0,1") # Create the MD workspace qscale = 'Q in A^-1' fake_md = ConvertToMD(InputWorkspace=fake_data, QDimensions="Q3D", QConversionScales=qscale, SplitInto=[3], SplitThreshold=100, MinValues="-15,-15,-15,-30", MaxValues="25,25,25,279",OverwriteExisting=True) # Run the simulation. resol_model = "TobyFitResolutionModel" xsec_model = "Strontium122" parameters = "Seff=0.7,J1a=38.7,J1b=-5.0,J2=27.3,SJc=10.0,GammaSlope=0.08,MultEps=0,TwinType=0,MCLoopMin=10,MCLoopMax=10,MCType=1" # Use sobol & restart each pixel to ensure reproducible result for i in range(20): simulated = SimulateResolutionConvolvedModel(InputWorkspace=fake_md, ResolutionFunction=resol_model, ForegroundModel=xsec_model, Parameters=parameters)
comment:10 Changed 5 years ago by Stuart Campbell
This ticket has been transferred to github issue 6558