From: hadaq <hadaq> Date: Tue, 9 Aug 2011 14:56:08 +0000 (+0000) Subject: Second try: Bugfix in eventbuilding: when master stream had lost a trigger sequence... X-Git-Url: https://jspc29.x-matter.uni-frankfurt.de/git/?a=commitdiff_plain;h=d3a4e1455f4e7bfa4e0a5aa2ca712a216ade537f;p=daqdata.git Second try: Bugfix in eventbuilding: when master stream had lost a trigger sequence number (possibly by udp layer), eventbuilder could not recover subevent synchronization -> increase of discarded events until regular program exit. This was observed at Aug2011 beamtime several times per day with cosmic and test runs. Workaround with a delayed pop of master stream queue. Try: Added free of shared mem and queue, since eb was stuck with previous version... JAM --- diff --git a/hadaq/evtbuild.c b/hadaq/evtbuild.c index 9de629c..8855263 100644 --- a/hadaq/evtbuild.c +++ b/hadaq/evtbuild.c @@ -1,4 +1,4 @@ -static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/evtbuild.c,v 6.148 2011-08-09 11:33:20 hadaq Exp $"; +static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/evtbuild.c,v 6.149 2011-08-09 14:56:08 hadaq Exp $"; #define _POSIX_C_SOURCE 199309L #define SYSLOG_NAMES @@ -1310,6 +1310,12 @@ int main(int argc, char *argv[]) if (popMaster) { /* Regular case: delayed pop of last master stream entry after check ok */ HadTuQueue_pop(hadTuQueue[0]); + if (HadTuQueue_empty(hadTuQueue[0])) { + desHadTuQueue(hadTuQueue[0]); + free(hadTuQueue[0]); + hadTuQueue[0] = NULL; + ShmTrans_free(shmTrans[0]); + } } else { /* display error and keep last event in hope for later synchronization */ sprintf(msglog, "<W> Master message stream has missed trigger sequence nr:%d. Kept subevent nr %d in master queue",