Hi meskio! On Tue, 2021-03-02 14:01:13 +0100, meskio <mes...@sindominio.net> wrote: > Jan-Benedict, thanks for the report. > Quoting Jan-Benedict Glaw (2021-02-27 23:31:57) > > I gave laminar a try, but laminard dies on SIGPIPE: > > > > (gdb) bt > > #0 0x00007f7f95d53da3 in __GI___writev (fd=16, iov=0x7ffdebf13860, > > iovcnt=3) at ../sysdeps/unix/sysv/linux/writev.c:26 > > #1 0x00007f7f963d8269 in non-virtual thunk to kj::(anonymous > > namespace)::AsyncStreamFd::write(kj::ArrayPtr<kj::ArrayPtr<unsigned char > > const> const>) () at src/kj/async-inl.h:403 > > #2 0x00007f7f96487dc6 in kj::(anonymous > > namespace)::HttpOutputStream::<lambda()>::operator() > > (__closure=0x56237a1a5410) at src/kj/compat/http.c++:1661 > > #3 kj::_::MaybeVoidCaller<kj::_::Void, kj::Promise<void> > > >::apply<kj::(anonymous > > namespace)::HttpOutputStream::writeBodyData(kj::ArrayPtr<const > > kj::ArrayPtr<unsigned char const> >)::<lambda()> > (func=..., func=..., > > in=...) at ./src/kj/async-prelude.h:148 > > #4 kj::_::TransformPromiseNode<kj::Promise<void>, kj::_::Void, > > kj::(anonymous > > namespace)::HttpOutputStream::writeBodyData(kj::ArrayPtr<const > > kj::ArrayPtr<unsigned char const> >)::<lambda()>, > > kj::_::PropagateException>::getImpl(kj::_::ExceptionOrValue &) > > (this=0x56237a1a53f0, output=...) at ./src/kj/async-inl.h:401 > > #5 0x00007f7f9638c502 in > > kj::_::TransformPromiseNodeBase::<lambda()>::operator() > > (__closure=0x7ffdebf14188, __closure=0x7ffdebf14188) at src/kj/async.c++:703 > > #6 > > kj::_::RunnableImpl<kj::_::TransformPromiseNodeBase::get(kj::_::ExceptionOrValue&)::<lambda()> > > >::run(void) (this=0x7ffdebf14180) at src/kj/exception.h:302 > > #7 0x00007f7f96305f9b in kj::_::runCatchingExceptions (runnable=warning: > > RTTI symbol not found for class > > 'kj::_::RunnableImpl<kj::_::TransformPromiseNodeBase::get(kj::_::ExceptionOrValue&)::{lambda()#1}>' > > ...) at src/kj/exception.c++:1023 > > #8 0x00007f7f9638b6fa in > > kj::runCatchingExceptions<kj::_::TransformPromiseNodeBase::get(kj::_::ExceptionOrValue&)::<lambda()> > > > (func=...) at src/kj/common.h:514 > > #9 kj::_::TransformPromiseNodeBase::get (this=<optimized out>, output=...) > > at src/kj/async.c++:703 > > #10 0x00007f7f963901e9 in kj::_::ChainPromiseNode::fire > > (this=0x56237a1b2cd0) at src/kj/async.c++:855 > > #11 0x00007f7f9638be3c in kj::EventLoop::turn (this=0x56237a17df98) at > > src/kj/async.c++:373 > > #12 0x00007f7f963910c5 in kj::_::waitImpl (node=..., result=..., > > waitScope=...) at src/kj/async.c++:440 > > #13 0x0000562378dde1cc in kj::Promise<void>::wait (waitScope=..., > > this=0x7ffdebf14cf0) at /usr/include/kj/async-inl.h:902 > > #14 Server::start (this=0x56237a17e1e0) at ./src/server.cpp:56 > > #15 0x0000562378d9eeba in main (argc=<optimized out>, argv=<optimized out>) > > at ./src/main.cpp:98 > > > > > > This is while one job is running and I'm following it's build log on > > the /jobs/xxx/nn page. Quite easy to reproduce. > > I'm using laminar myself and I haven't seeing this issue. Can you provide an > example job that produces this issue for you?
This was while I was setting things up to do CI builds for binutils/gas/gdb/gcc. I observed crashing laminard with any job, though not in a clear reproducible way. My impression is that this is in conjunction with logs and reloads (browser tab.) So testing this hypothesis would mean "reload the browser tab" while following the log, or reload the (raw) log file frequently while it is still being appended by the run. > > (Another small issue: /var/log/laminar.log isn't pre-created and > > daemon drops permissions before creating the file, so it fails > > creating it altogether.) > > From that report I guess you use sysv-init instead of systemd isn't it? Maybe > the SIGPIPE error is also related to that. I have to say I didn't test it on > any > other setup than systemd. I don't have at hand a sysv-init system, I'll try > to > setup one. Right, that's an older Debian (unstable) system updated to what's current right now, but I tried to keep systemd out of that box. I do not think that SysV init has something to do with the SIGPIPE. It's probably being a close()d / shutdown()ed FD (at the browser side) while it tries to chunk-send data. However, with systemd you'd probably get a restart of laminard. You may observe a failed / missing run, but because daemon(1) won't do a restart, laminard dies for me without getting a recovery by restart. > If you are able to test your laminar with systemd tell me if your problem > persist there. I'll try to pin down in which circumstances this actually happens. MfG, JBG --
signature.asc
Description: PGP signature