diff --git a/.cvsignore b/.cvsignore new file mode 100644 index 00000000..ad6d1038 --- /dev/null +++ b/.cvsignore @@ -0,0 +1,2 @@ +emergency.scn +recover.bin diff --git a/statemon.c b/statemon.c new file mode 100644 index 00000000..eee359e6 --- /dev/null +++ b/statemon.c @@ -0,0 +1,322 @@ +/** + * This is a state monitor. It collects all the start and stop messages + * from the device executor and from scan and batch commands. Clients can + * listen to this in order to figure out what is actually going on in a + * given SICS installation. This might in the end supersede the status code + * managment in status.c + * + * copyright: see file COPYRIGHT + * + * Mark Koennecke, January 2007 + */ +#include +#include "exeman.h" +#include "scan.h" +#include "scan.i" +#include "stptok.h" +#include "statemon.h" +#include "sicshipadaba.h" +/*==========================================================================*/ +typedef struct __STATEMON { + pObjectDescriptor pDes; + pICallBack pCall; +}StateMon; +/*============================ Callbacks =================================*/ + static int DevexecCallback(int iEvent, void *text, void *pData, + commandContext cc){ + char pDevice[132]; + int eventCode; + pStateMon self = (pStateMon)pData; + + memset(pDevice,0,132); + if(iEvent == DRIVSTAT){ + stptok(text,pDevice,131," "); + if(strstr(text,"started") != NULL){ + eventCode = STSTART; + } else if(strstr(text,"finished") != NULL) { + eventCode = STEND; + } else { + printf("Unrecognized event text from devexec in statemon.c: %s\n", + text); + return 0; + } + if(self != NULL){ + InvokeCallBack(self->pCall,eventCode,pDevice); + } + } + return 1; + } +/*---------------------------------------------------------------------------*/ +static int StateMonScanInterest(int iEvent, void *pEventData, void *pUser, + commandContext cc){ + pScanData pScan = NULL; + pStateMon self = (pStateMon)pUser; + + pScan = (pScanData)pEventData; + + if(pScan == NULL || self == NULL){ + printf("Bad StateMonScanInterst in statemon\n"); + return 0; + } + + if(iEvent == SCANSTART){ + InvokeCallBack(self->pCall,STSTART,pScan->objectName); + return 1; + }else if(iEvent == SCANEND){ + InvokeCallBack(self->pCall,STEND,pScan->objectName); + return 1; + } + return 1; +} +/*--------------------------------------------------------------------------*/ +static int ExeCallback(int iEvent, void *pEvent, void *pUser, + commandContext cc){ + pStateMon self = (pStateMon)pUser; + char *name = (char *)pEvent; + char pBueffel[131]; + + if(self == NULL || name == NULL){ + printf("Bad ExeCallback in statemon\n"); + return 0; + } + + if(iEvent == BATCHSTART){ + snprintf(pBueffel,131,"exe %s",name); + InvokeCallBack(self->pCall,STSTART,pBueffel); + return 1; + } + if(iEvent == BATCHEND){ + snprintf(pBueffel,131,"exe %s",name); + InvokeCallBack(self->pCall,STEND,pBueffel); + return 1; + } + return 0; +} +/*=============== user callbacks ============================================*/ +static int StateInterest(int iEvent, void *pEvent, void *pUser, + commandContext cc){ + SConnection *pCon = (SConnection *)pUser; + char *device = (char *)pEvent; + char buffer[256]; + + if(pCon == NULL || device == NULL){ + printf("Bad StateInterest in statemon\n"); + return 0; + } + if(iEvent == STSTART){ + snprintf(buffer,255,"STARTED = %s", device); + SCWriteInContext(pCon,buffer,eWarning,cc); + } + if(iEvent == STEND){ + snprintf(buffer,255,"FINISH = %s", device); + SCWriteInContext(pCon,buffer,eWarning,cc); + } + return 1; +} +/*--------------------------------------------------------------------------*/ +static pHdb recurseInterestNode(pHdb current, char *pDevice){ + char pSicsdev[131], pAlias[132]; + pHdb result = NULL; + char *alias = NULL, *pPtr = NULL; + + memset(pSicsdev,0,132); + memset(pAlias,0,132); + if(current != NULL){ + if(GetHdbProperty(current,"sicsdev",pSicsdev,131) != 0){ + strtolower(pSicsdev); + if(strcmp(pSicsdev,pDevice) == 0){ + return current; + } + /* + * try to look for aliases, too + */ + alias = FindAliases(pServ->pSics,pSicsdev); + pPtr = alias; + while((pPtr = stptok(pPtr,pAlias,131,",")) != NULL){ + if(strcmp(pAlias,pDevice) == 0){ + return current; + } + } + if(alias != NULL){ + free(alias); + } + } + current = current->child; + while(current != NULL){ + result = recurseInterestNode(current, pDevice); + if(result != NULL){ + return result; + } + current = current->next; + } + } + return NULL; +} +/*--------------------------------------------------------------------------*/ +static pHdb locateInterestNode(char *device){ + char pDevice[132], pSicsdev[132]; + pHdb current = NULL, result = NULL; + + memset(pDevice,0,132); + memset(pSicsdev,0,132); + + /* + * this is to strip off exes batch file name + */ + stptok(device,pDevice,131," "); + strtolower(pDevice); + + current = GetHipadabaRoot(); + return recurseInterestNode(current,pDevice); +} +/*--------------------------------------------------------------------------*/ +static int StateHdbInterest(int iEvent, void *pEvent, void *pUser, + commandContext cc){ + SConnection *pCon = (SConnection *)pUser; + char *device = (char *)pEvent, *path = NULL; + char buffer[1024]; + pHdb node = NULL; + + if(pCon == NULL || device == NULL){ + printf("Bad StateHdbInterest in statemon\n"); + return 0; + } + node = locateInterestNode(device); + if(node != NULL){ + path = GetHipadabaPath(node); + if(iEvent == STSTART){ + snprintf(buffer,1024,"%s STARTED", path); + SCWriteInContext(pCon,buffer,eWarning,cc); + } + if(iEvent == STEND){ + snprintf(buffer,1024,"%s FINISH", path); + SCWriteInContext(pCon,buffer,eWarning,cc); + } + } + return 1; +} +/*====================== interpreter interface ==============================*/ +static void killStateMon(void *pData){ + pStateMon self = NULL; + + self = (pStateMon)pData; + if(self != NULL){ + if(self->pDes != NULL){ + DeleteDescriptor(self->pDes); + } + if(self->pCall != NULL){ + DeleteCallBackInterface(self->pCall); + } + free(self); + } +} +/*---------------------------------------------------------------------------*/ +int StateMonFactory(SConnection *pCon, SicsInterp *pSics, void *pData, + int argc, char *argv[]){ + pStateMon pNew = NULL; + commandContext cc; + pICallBack target = NULL; + void *pPtr = NULL, *exe = NULL, *pDevexec = NULL; + + exe = FindCommandData(pSics,"exe", "ExeManager"); + pDevexec = FindCommandData(pSics,"stopexe","DeviceExecutor"); + if(exe == NULL || pDevexec == NULL){ + SCWrite(pCon, + "ERROR: both the device executor and the batch file module must be installed before initialising statemon", + eError); + return 0; + } + + /* + * generate data structures + */ + strcpy(cc.deviceID,"statemon"); + cc.transID = -120; + pNew = (pStateMon)malloc(sizeof(StateMon)); + if(pNew == NULL){ + SCWrite(pCon,"ERROR: out of memory creating StateMon",eError); + return 0; + } + memset(pNew,0,sizeof(StateMon)); + pNew->pDes = CreateDescriptor("statemon"); + pNew->pCall = CreateCallBackInterface(); + if(pNew->pDes == NULL || pNew->pCall == NULL){ + SCWrite(pCon,"ERROR: out of memory creating StateMon",eError); + return 0; + } + /* + * register callbacks + */ + target = GetCallbackInterface(pDevexec); + assert(target != NULL); + RegisterCallback(target,cc,DRIVSTAT,DevexecCallback,pNew,NULL); + target = GetCallbackInterface(exe); + assert(target != NULL); + RegisterCallback(target,cc,BATCHSTART,ExeCallback,pNew,NULL); + RegisterCallback(target,cc,BATCHEND,ExeCallback,pNew,NULL); + + if(argc > 1) { + pPtr = FindCommandData(pSics,argv[1],"ScanObject"); + if(pPtr == NULL){ + SCWrite(pCon,"ERROR: failked to locate scan object",eError); + } else { + target = GetCallbackInterface(pPtr); + assert(target != NULL); + RegisterCallback(target,cc,SCANSTART,StateMonScanInterest,pNew,NULL); + RegisterCallback(target,cc,SCANEND,StateMonScanInterest,pNew,NULL); + } + } + /* + * TODO: add kill functions + */ + AddCommand(pSics,"statemon",StateMonAction,killStateMon,pNew); + return 1; +} +/*---------------------------------------------------------------------------*/ +int StateMonAction(SConnection *pCon, SicsInterp *pSics, void *pData, + int argc, char *argv[]){ + long lID; + int i; + pStateMon self = NULL; + + self = (pStateMon)pData; + assert(self != NULL); + + if(argc < 2){ + SCWrite(pCon,"ERROR: not enough arguments to statemon",eError); + return 0; + } + strtolower(argv[1]); + if(strcmp(argv[1],"interest") == 0){ + lID = RegisterCallback(self->pCall, SCGetContext(pCon),STSTART, StateInterest, + pCon, NULL); + SCRegister(pCon,pSics, self->pCall,lID); + lID = RegisterCallback(self->pCall, SCGetContext(pCon),STEND, StateInterest, + pCon, NULL); + SCRegister(pCon,pSics, self->pCall,lID); + SCSendOK(pCon); + return 1; + } else if(strcmp(argv[1],"uninterest") == 0) { + for(i = 0; i < 2; i++){ + lID = SCgetCallbackID(pCon,self->pCall); + if(lID >= 0){ + RemoveCallback(self->pCall,lID); + SCUnregisterID(pCon,lID); + } + } + SCSendOK(pCon); + return 1; + } else if(strcmp(argv[1],"hdbinterest") == 0){ + lID = RegisterCallback(self->pCall, SCGetContext(pCon),STSTART, StateHdbInterest, + pCon, NULL); + SCRegister(pCon,pSics, self->pCall,lID); + lID = RegisterCallback(self->pCall, SCGetContext(pCon),STEND, StateHdbInterest, + pCon, NULL); + SCRegister(pCon,pSics, self->pCall,lID); + SCSendOK(pCon); + return 1; + } + + SCWrite(pCon,"ERROR: keyword not recognized",eError); + return 0; +} diff --git a/statemon.h b/statemon.h new file mode 100644 index 00000000..686cdcd9 --- /dev/null +++ b/statemon.h @@ -0,0 +1,21 @@ +/** + * This is a state monitor. It collects all the start and stop messages + * from the device executor and from scan and batch commands. Clients can + * listen to this in order to figure out what is actually going on in a + * given SICS installation. This might in the end supersede the status code + * managment in status.c + * + * copyright: see file COPYRIGHT + * + * Mark Koennecke, January 2007 + */ +#ifndef STATEMON_H_ +#define STATEMON_H_ +typedef struct __STATEMON *pStateMon; + +/*===================== The interpreter interface ===========================*/ +int StateMonFactory(SConnection *pCon, SicsInterp *pSics, void *pData, + int argc, char *argv[]); +int StateMonAction(SConnection *pCon, SicsInterp *pSics, void *pData, + int argc, char *argv[]); +#endif /*STATEMON_H_*/ diff --git a/val.lis b/val.lis new file mode 100644 index 00000000..e5e2de98 --- /dev/null +++ b/val.lis @@ -0,0 +1,215 @@ +==16499== Memcheck, a memory error detector for x86-linux. +==16499== Copyright (C) 2002-2004, and GNU GPL'd, by Julian Seward et al. +==16499== Using valgrind-2.2.0, a program supervision framework for x86-linux. +==16499== Copyright (C) 2000-2004, and GNU GPL'd, by Julian Seward et al. +==16499== For more details, rerun with: -v +==16499== +WARNING: Cannot log(Accepted dummy connection ) +sim/topsi/morpheus.tcl:0>> ServerOption ReadTimeOut 10 +sim/topsi/morpheus.tcl:1>> ServerOption AcceptTimeOut 50 +sim/topsi/morpheus.tcl:2>> ServerOption ReadUserPasswdTimeout 500000 +sim/topsi/morpheus.tcl:3>> ServerOption LogFileBaseName $loghome/morpheus +sim/topsi/morpheus.tcl:4>> ServerOption TecsPort 9753 +sim/topsi/morpheus.tcl:5>> ServerOption ServerPort 2911 +sim/topsi/morpheus.tcl:6>> ServerOption InterruptPort 9709 +sim/topsi/morpheus.tcl:7>> ServerOption statusfile $datahome/morpheusstatus.tcl +sim/topsi/morpheus.tcl:8>> ServerOption TelnetPort 1301 +sim/topsi/morpheus.tcl:9>> ServerOption TelWord sicslogin +sim/topsi/morpheus.tcl:10>> ServerOption QuieckPort 2108 +sim/topsi/morpheus.tcl:11>> TokenInit connan +sim/topsi/morpheus.tcl:12>> ServerOption LogFileDir $loghome +sim/topsi/morpheus.tcl:13>> commandlog auto +sim/topsi/morpheus.tcl:14>> ServerOption RedirectFile $loghome/mostdout +sim/topsi/morpheus.tcl:15>> MakeDataNumber SicsDataNumber $datahome/DataNumber +sim/topsi/morpheus.tcl:16>> VarMake SicsDataPath Text Mugger +sim/topsi/morpheus.tcl:17>> SicsDataPath $datahome/ +sim/topsi/morpheus.tcl:18>> SicsDataPath lock +sim/topsi/morpheus.tcl:19>> VarMake SicsDataPrefix Text Mugger +sim/topsi/morpheus.tcl:20>> SicsDataPrefix lock +sim/topsi/morpheus.tcl:21>> VarMake SicsDataPostFix Text Mugger +sim/topsi/morpheus.tcl:22>> SicsDataPostFix .dat +sim/topsi/morpheus.tcl:23>> SicsDataPostFix lock +sim/topsi/morpheus.tcl:24>> SicsUser lnsmanager lnsSICSlns 1 +sim/topsi/morpheus.tcl:25>> SicsUser morpheususer 06lns1 2 +sim/topsi/morpheus.tcl:26>> SicsUser mu 06lns1 2 +sim/topsi/morpheus.tcl:27>> VarMake Instrument Text Internal +sim/topsi/morpheus.tcl:28>> VarMake sample Text User +sim/topsi/morpheus.tcl:29>> sample " " +sim/topsi/morpheus.tcl:30>> VarMake Title Text User +sim/topsi/morpheus.tcl:31>> Title "morpheus" +sim/topsi/morpheus.tcl:32>> VarMake User Text User +sim/topsi/morpheus.tcl:33>> User "unknown" +sim/topsi/morpheus.tcl:34>> VarMake email Text User +sim/topsi/morpheus.tcl:35>> email "unknown" +sim/topsi/morpheus.tcl:36>> VarMake adress Text User +sim/topsi/morpheus.tcl:37>> adress "unknown" +sim/topsi/morpheus.tcl:38>> VarMake fax Text User +sim/topsi/morpheus.tcl:39>> fax "unknown" +sim/topsi/morpheus.tcl:40>> VarMake phone Text User +sim/topsi/morpheus.tcl:41>> phone "unknown" +sim/topsi/morpheus.tcl:42>> VarMake BatchRoot text User +sim/topsi/morpheus.tcl:43>> VarMake lastscancommand Text User +sim/topsi/morpheus.tcl:44>> lastscancommand "unknown scan" +sim/topsi/morpheus.tcl:45>> Publish savemotorpar Mugger +sim/topsi/morpheus.tcl:46>> SicsAlias STH A3 +sim/topsi/morpheus.tcl:47>> SicsAlias STH SOM +sim/topsi/morpheus.tcl:48>> SicsAlias STH TH +sim/topsi/morpheus.tcl:49>> SicsAlias STH OM +sim/topsi/morpheus.tcl:50>> SicsAlias STT A4 +sim/topsi/morpheus.tcl:51>> SicsAlias STT S2T +sim/topsi/morpheus.tcl:52>> SicsAlias STT TTH +sim/topsi/morpheus.tcl:53>> SicsAlias STT 2T +sim/topsi/morpheus.tcl:54>> SicsAlias SCX SCH +sim/topsi/morpheus.tcl:55>> SicsAlias SCY SPH +sim/topsi/morpheus.tcl:56>> SicsAlias SCY ATX +sim/topsi/morpheus.tcl:57>> SicsAlias PO1 POL +sim/topsi/morpheus.tcl:58>> SicsAlias PO2 ANA +sim/topsi/morpheus.tcl:59>> SicsAlias MTH A1 +sim/topsi/morpheus.tcl:60>> SicsAlias MTH MOM +sim/topsi/morpheus.tcl:61>> SicsAlias MTT A2 +sim/topsi/morpheus.tcl:62>> SicsAlias MTT M2T +sim/topsi/morpheus.tcl:63>> SicsAlias MFV MCV +sim/topsi/morpheus.tcl:64>> SicsAlias SCX CHI +sim/topsi/morpheus.tcl:65>> SicsAlias SCY PHI +sim/topsi/morpheus.tcl:66>> MakeLin2Ang sttl utt +sim/topsi/morpheus.tcl:67>> sttl length 2110 +sim/topsi/morpheus.tcl:68>> SicsAlias sttl u2t +sim/topsi/morpheus.tcl:69>> MakeO2T O2T sth stt +sim/topsi/morpheus.tcl:70>> MakeO2T O2TL sth sttl +sim/topsi/morpheus.tcl:71>> MakeO2T O2U sth sttl +sim/topsi/morpheus.tcl:72>> MakeScanCommand xxxscan counter $scripthome/morpheus.hdd \ + $loghome/recover.bin +sim/topsi/morpheus.tcl:73>> MakePeakCenter xxxscan +sim/topsi/morpheus.tcl:74>> xxxscan configure soft +sim/topsi/morpheus.tcl:75>> MakeOptimise opti counter +sim/topsi/morpheus.tcl:76>> SicsAlias drive dr +sim/topsi/morpheus.tcl:77>> DefineAlias TT temperature +sim/topsi/morpheus.tcl:78>> MakeHKL stt sth sph sch +sim/topsi/morpheus.tcl:79>> MakeHKLMot hkl +sim/topsi/morpheus.tcl:80>> MakeUBCalc ubcalc hkl +sim/topsi/morpheus.tcl:81>> MakeCone cone ubcalc +sim/topsi/morpheus.tcl:82>> MakeXYTable table +sim/topsi/morpheus.tcl:83>> MakeConfigurableMotor two +sim/topsi/morpheus.tcl:84>> two drivescript twoscript +ERROR: duplicate exe manager not created +sim/topsi/morpheus.tcl:85>> fileeval $scripthome/morpheuscom.tcl +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:86>> MakeStateMon xxxscan +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:87>> hmake /morpheus spy none +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:88>> hsetprop /morpheus type instrument +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:89>> hmake /graphics spy none +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:90>> hsetprop /graphics type graphset +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:91>> hmake /commands spy none +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:92>> hsetprop /commands type commandset +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:93>> hattach /morpheus title title +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:94>> hmake /morpheus/user spy none +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:95>> hsetprop /morpheus/user type dev +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:96>> hattach /morheus/user user name +ERROR: path to attach object too not found +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:97>> hattach /morpheus/user adress address +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:98>> hattach /morpheus/user phone phone +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:99>> hattach /morpheus/user email email +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:100>> hmake /morpheus/monochromator spy none +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:101>> hsetprop /morpheus/monochromator type part +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:102>> hattach /morpheus/monochromator lambda wavelength +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:103>> hattach /morpheus/monochromator mth theta +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:104>> hattach /morpheus/monochromator mtt two_theta +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:105>> hattach /morpheus/monochromator mtx x_translation +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:106>> hattach /morpheus/monochromator mty y_translation +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:107>> hattach /morpheus/monochromator mfv vertical_focusing +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:108>> hmakescript /morpheus/monochromator/d_value "mono dd" "mono dd" float +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:109>> hsetprop /morpheus/monochromator/d_value priv manager +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:110>> hmakescript /morpheus/monochromator/scattering_sense "mono ss" "mono ss" int +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:111>> hsetprop /morpheus/monochromator/scattering_sense priv manager +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:112>> hmake /morpheus/slit1 spy none +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:113>> hsetprop /morpheus/slit1 type part +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:114>> hattach /morpheus/slit1 d1l left +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:115>> hattach /morpheus/slit1 d1r right +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:116>> hattach /morpheus/slit1 d1t top +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:117>> hattach /morpheus/slit1 d1b bottom +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:118>> hmake /morpheus/slit2 spy none +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:119>> hsetprop /morpheus/slit2 type part +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:120>> hattach /morpheus/slit2 d2l left +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:121>> hattach /morpheus/slit2 d2r right +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:122>> hattach /morpheus/slit2 d2t top +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:123>> hattach /morpheus/slit2 d2b bottom +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:124>> hmake /morpheus/sample spy none +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:125>> hsetprop /morpheus/sample type part +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:126>> hattach /morpheus/sample sample name +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:127>> hattach /morpheus/sample sth omega +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:128>> hattach /morpheus/sample stt two_theta +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:129>> hattach /morpheus/sample stx x_translation +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:130>> hattach /morpheus/sample sty y_translation +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:131>> hattach /morpheus/sample sgy y_goniometer +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:132>> hattach /morpheus/sample sgx x_goniometer +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:133>> hmake /morpheus/monitor spy none +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:134>> hsetprop /morpheus/monitor type part +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:135>> hmakescript /morpheus/monitor/counts "counter getmonitor 1" hdbReadOnly int +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:136>> hsetprop /morpheus/monitor/counts priv internal +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:137>> hmakescript /morpheus/monitor/preset "counter getpreset" "counter setpreset" float +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:138>> hmakescript /morpheus/monitor/countmode "counter getmode" "counter setmode" text +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:139>> hmake /morpheus/counter spy none +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:140>> hsetprop /morpheus/counter type part +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:141>> hmakescript /morpheus/counter/counts "counter getcounts" hdbReadOnly int +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:142>> hsetprop /morpheus/counter/counts priv internal +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:143>> hmake /graphics/scan_data spy none +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:144>> hsetprop /graphics/scan_data type graphdata +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:145>> hsetprop /graphics/scan_data viewer default +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:146>> hmake /graphics/scan_data/rank mugger int +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:147>> hset /graphics/scan_data/rank 1 +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:148>> hsetprop /graphics/scan_data/rank priv internal +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:149>> hmakescript /graphics/scan_data/dim "xxxscan np" hdbReadOnly intar 1 +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:150>> hsetprop /graphics/scan_data/dim priv internal +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:151>> hmakescript /graphics/scan_data/scan_variable "gethdbscanvardata 0" hdbReadOnly floatvarar 1 +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:152>> hsetprop /graphics/scan_data/scan_variable type axis +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:153>> hsetprop /graphics/scan_data/scan_variable dim 0 +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:154>> hsetprop /graphics/scan_data/scan_variable priv internal +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:155>> hmakescript /graphics/scan_data/counts "gethdbscancounts" hdbReadOnly intvarar 1 +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:156>> hsetprop /graphics/scan_data/counts type data +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:157>> hsetprop /graphics/scan_data/counts priv internal +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:158>> hcommand /commands/scan hdbscan +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:159>> hsetprop /commands/scan type command +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:160>> hsetprop /commands/scan priv user +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:161>> hmake /commands/scan/scan_variables user text +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:162>> hmake /commands/scan/scan_start user text +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:163>> hmake /commands/scan/scan_increments user text +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:164>> hmake /commands/scan/NP user int +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:165>> hmake /commands/scan/mode user text +/home/koenneck/psi/workspace/sics/sim/topsi/morpheuscom.tcl:166>> hmake /commands/scan/preset user float +OK +==16499== Invalid read of size 4 +==16499== at 0x807D1B4: CheckPointer (callback.c:73) +==16499== by 0x807D408: RegisterCallback (callback.c:163) +==16499== by 0x80F4593: StateMonAction (statemon.c:276) +==16499== by 0x8051B55: InterpExecute (SCinter.c:319) +==16499== Address 0x45C708EC is not stack'd, malloc'd or (recently) free'd +==16499== +==16499== Process terminating with default action of signal 11 (SIGSEGV): dumping core +==16499== Access not within mapped region at address 0x45C708EC +==16499== at 0x807D1B4: CheckPointer (callback.c:73) +==16499== by 0x807D408: RegisterCallback (callback.c:163) +==16499== by 0x80F4593: StateMonAction (statemon.c:276) +==16499== by 0x8051B55: InterpExecute (SCinter.c:319) + +valgrind: vg_signals.c:1660 (make_coredump): Assertion `vgPlain_lseek(core_fd, 0, 1) == phdrs[i].p_offset' failed. +==16499== at 0xB002B765: vgPlain_skin_assert_fail (in /usr/lib/valgrind/stage2) +==16499== by 0xB002B764: assert_fail (in /usr/lib/valgrind/stage2) +==16499== by 0xB002B7A2: vgPlain_core_assert_fail (in /usr/lib/valgrind/stage2) +==16499== by 0xB0031009: make_coredump (in /usr/lib/valgrind/stage2) + +sched status: + +Thread 1: status = Runnable, associated_mx = 0x0, associated_cv = 0x0 +==16499== at 0x807D1B4: CheckPointer (callback.c:73) +==16499== by 0x807D408: RegisterCallback (callback.c:163) +==16499== by 0x80F4593: StateMonAction (statemon.c:276) +==16499== by 0x8051B55: InterpExecute (SCinter.c:319) + + +Note: see also the FAQ.txt in the source distribution. +It contains workarounds to several common problems. + +If that doesn't help, please report this bug to: valgrind.kde.org + +In the bug report, send all the above text, the valgrind +version, and what Linux distro you are using. Thanks. +