Genau das sollte aber, wenn du die 3 Zeilen verschiebst, nicht mehr vorkommen können (weil sectionsd sofort sagt "ok, fertig", auch wenn er noch gar nichts gemacht hat).
Also müßtest du an dieser stelle dort mal debug-Code mit Timing-Informationen reinmachen, damit wir sehen, an welcher Stelle es genau hängt. (Kommentare jeweils hinter dem Code)
Code: Alles auswählen
4264 static void commandReadSIfromXML(int connfd, char *data, const unsigned dataLength)
4265 {
4266 pthread_t thrInsert;
4267
4268 if (dataLength > 100)
4269 return ;
4270
4271 writeLockMessaging();
====== Hier könnte es hängen =======
4272 epg_dir = (std::string)data;
4273 unlockMessaging();
4274
4275 struct sectionsd::msgResponseHeader responseHeader;
4276 responseHeader.dataLength = 0;
4277 writeNbytes(connfd, (const char *)&responseHeader, sizeof(responseHeader), WRITE_TIMEOUT_IN_SECONDS);
====== Ab hier sollte neutrino weitermachen ======
4278
4279 pthread_attr_t attr;
4280 pthread_attr_init(&attr);
4281 pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
4282
4283 struct sched_param param;
4284 pthread_attr_setschedpolicy(&attr, SCHED_RR);
4285 param.sched_priority=-10;
4286 pthread_attr_setschedparam(&attr, ¶m);
====== Diese 4 Zeilen sind absolut falsch, evtl. hilft es ja, die zu entfernen (SCHED_RR mit priority<1 geht nicht) ====
4287
4288 if (pthread_create (&thrInsert, &attr, insertEventsfromFile, 0 ))
====== Erst hier wird die Funktion zum einlesen gestartet ===
In die insertEventsfromFile()-Funktion (ab Zeile 4110) solltest du auch debug-Output reinmachen, damit du siehst, wann die tatsächlich aufgerufen wird. Ich vermute mal, die wird erst dann aufgerufen, wenn Neutrino schon weiterläuft.