Hi Ruben! On Tue, 2021-03-02 23:41:30 +0100, Jan-Benedict Glaw <jbg...@lug-owl.de> wrote: > SIGPIPE was a red herring, it happens ever so often and is ignored. > But there's a SIGSEGV: [...]
My impression is that access to the logWatchers isn't locked, so incoming log output (from some run) are pushed by iterating over current logWatchers. However, if a logWatcher goes away, it's still referenced during the push loop. 287 void Http::notifyLog(std::string job, uint run, std::string log_chunk, bool eot) 288 { 289 for(LogWatcher* lw : logWatchers) { 290 if(lw->job == job && lw->run == run) { 291 lw->pendingOutput.push_back(kj::mv(log_chunk)); 292 lw->fulfiller->fulfill(kj::mv(eot)); 293 } 294 } 295 } Seems it's quite easily triggered by having a job that logs _lots_ of lines and playing with a browser's reload button... MfG, JBG --
signature.asc
Description: PGP signature