You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Running lit commands in docker build segfault at exit. #292
I reproduced this with latest luvi (v2.12.0) on both alpine and ubuntu docker environments with both building from source and using the prebuilt get-lit luvi binaries. I don't think it's a luvi issue entirely.
A simple docker based luvi+lit app looks something like this:
FROM creationix/lit
ADD package.lua .
RUN lit install
ADD main.lua .
EXPOSE 8080
CMD ["luvi", "."]
This normally works great, but with the latest version of lit, it will fail after lit install finishes:
$ docker build webserver/
Sending build context to Docker daemon 4.096kB
Step 1/6 : FROM creationix/lit
---> 59a1da203be1
Step 2/6 : ADD package.lua .
---> e22d625ce600
Step 3/6 : RUN lit install
---> Running in f58a663faf85
lit version: 3.8.5
luvi version: v2.12.0
command: install
create config: /root/.litconfig
connecting: wss://lit.luvit.io/
fetching: 1 object
...
fetching: 1 object
including dependency: coro-channel (3.0.3)
...
including dependency: weblit-server (3.1.3)
installing package: creationix/weblit-app@v3.2.1
...
installing package: luvit/http-codec@v3.0.6
done: success
The command'/bin/sh -c lit install' returned a non-zero code: 139
I'm wondering if it's related to some recent changes to how stdout is managed in pretty-print? Not sure really.
I can work around the issue in the Dockerfile by ignoring the return value like RUN lit install || true. As far as I can tell, the result is correct.
I don't think it's related to a lack of tty. I can use docker run creationix/lit lit ... with or without a pseudo terminal and there are no segfaults for any lit command. All lit commands segfault while exiting during the docker build step.
Not sure if it's any help, but I recently faced a similar issue when testing electron apps. It would segfault only on the Ubuntu VM, apparently because the output could not be rendered. My workaround was something like export DISPLAY=:45 && xvfb-run --server-num 45 before running the command in question, though I'm not a Linux expert so that might be bad.
I used GitHub actions and they run inside a Docker environment, so I figured it might be at least tangentially related... Could also be something else, since I also had the same issue when accessing the VM via ssh.
Run into the same issue trying to setup lua in a docker container. Here are some artifacts from me digging into the issue.
FROM ubuntu:latest
RUN apt-get update && apt-get upgrade -y
RUN apt-get install -y tzdata && \
rm /etc/localtime && \
ln -fs /usr/share/zoneinfo/US/Eastern /etc/localtime && \
dpkg-reconfigure -f noninteractive tzdata
RUN apt-get install -y lua5.3 liblua5.3-dev sqlite3 libsqlite3-dev vim curl build-essential unzip gdb
RUN cd /root && curl -L https://github.com/luvit/lit/raw/master/get-lit.sh | sh && \
mv ./lit /usr/local/bin/lit && \
mv ./luvi /usr/local/bin/luvi && \
mv ./luvit /usr/local/bin/luvit
RUN gdb -batch -ex "run" -ex "bt" --args lit help 2>&1 || true
Build output:
Step 8/8 : RUN gdb -batch -ex "run" -ex "bt" --args lit help 2>&1 || true ---> Running in f7c497d4134ewarning: Error disabling address space randomization: Operation not permitted[Thread debugging using libthread_db enabled]Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".lit version: 3.8.5luvi version: v2.11.0-21-g5d1052fcommand: help... help messagedone: successProgram received signal SIGABRT, Aborted.__GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:5050 ../sysdeps/unix/sysv/linux/raise.c: No such file or directory.#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50#1 0x00007fec82031859 in __GI_abort () at abort.c:79#2 0x000000000045d1bd in uv.io_poll.cold ()#3 0x000000000052c83a in uv_run ()#4 0x0000000000494f7e in luv_run ()#5 0x000000000052462a in lj_BC_FUNCC ()#6 0x000000000052561a in lj_ff_coroutine_wrap_aux ()#7 0x000000000051023f in lua_pcall ()#8 0x000000000045d36b in main ()Removing intermediate container f7c497d4134e ---> f967125d3a6f
Some more output when CMAKE_BUILD_TYPE=Debug for luvi.
FROM ubuntu:latest
RUN apt-get update && apt-get upgrade -y
RUN apt-get install -y tzdata && \
rm /etc/localtime && \
ln -fs /usr/share/zoneinfo/US/Eastern /etc/localtime && \
dpkg-reconfigure -f noninteractive tzdata
RUN apt-get install -y lua5.3 liblua5.3-dev sqlite3 libsqlite3-dev vim curl build-essential unzip gdb cmake
RUN apt-get install -y git zlib1g-dev libbz2-dev libeditline-dev
# Manual build of luviRUN cd /root && git clone --recursive --branch v2.12.0 https://github.com/luvit/luvi.git && \
cd luvi && \
sed -i 's/DCMAKE_BUILD_TYPE=Release/DCMAKE_BUILD_TYPE=Debug/' Makefile && \
make regular && \
make && \
make test
RUN cd /root/ && \
curl -L -f -o lit.zip "https://lit.luvit.io/packages/luvit/lit/v3.8.5.zip" && \
./luvi/build/luvi lit.zip -- make lit.zip || true
RUN cd /root && \
gdb -batch -ex "set follow-fork-mode child" -ex "run" -ex "bt" -ex "frame 2" -ex "list" --args /root/lit help 2>&1 || true
Program received signal SIGABRT, Aborted.__GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:5050 ../sysdeps/unix/sysv/linux/raise.c: No such file or directory.#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50#1 0x00007ff87df84859 in __GI_abort () at abort.c:79#2 0x0000561b59bd84a2 in uv__io_poll (loop=0x7ff87df4ed98, timeout=0) at /root/luvi/deps/luv/deps/libuv/src/unix/linux-core.c:254#3 0x0000561b59bbf63c in uv_run (loop=0x7ff87df4ed98, mode=UV_RUN_DEFAULT) at /root/luvi/deps/luv/deps/libuv/src/unix/core.c:385#4 0x0000561b59af0242 in luv_run (L=0x7ff87df571f0) at /root/luvi/deps/luv/src/loop.c:36#5 0x0000561b59bb4f9a in lj_BC_FUNCC () at buildvm_x86.dasc:851#6 0x0000561b59bb5f8a in lj_ff_coroutine_wrap_aux () at buildvm_x86.dasc:1808#7 0x0000561b59b27648 in lua_pcall (L=0x7ff87df3d380, nargs=1, nresults=1, errfunc=2) at /root/luvi/deps/luv/deps/luajit/src/lj_api.c:1169#8 0x0000561b59ae2a90 in main (argc=2, argv=0x561b5b5ff2a0) at /root/luvi/src/main.c:191#2 0x0000561b59bd84a2 in uv__io_poll (loop=0x7ff87df4ed98, timeout=0) at /root/luvi/deps/luv/deps/libuv/src/unix/linux-core.c:254254 abort();249 /* XXX Future optimization: do EPOLL_CTL_MOD lazily if we stop watching250 * events, skip the syscall and squelch the events after epoll_wait().251 */252 if (epoll_ctl(loop->backend_fd, op, w->fd, &e)) {253 if (errno != EEXIST)254 abort();255256 assert(op == EPOLL_CTL_ADD);257258 /* We've reactivated a file descriptor that's been watched before. */
The actual location in libuv repository get moved by this commit libuv/libuv@caf22dd
I suspect this has been likely fixed as of Luvi 2.15.0, testing with latest Lit.
Not entirely sure what fixes it, but it is either a luv update or some other segfault fix, potentially might've been related to #332 as well which is what I suspect frankly.
Activity
rdw-software commentedon Jul 30, 2021
Not sure if it's any help, but I recently faced a similar issue when testing electron apps. It would segfault only on the Ubuntu VM, apparently because the output could not be rendered. My workaround was something like
export DISPLAY=:45 && xvfb-run --server-num 45before running the command in question, though I'm not a Linux expert so that might be bad.I used GitHub actions and they run inside a Docker environment, so I figured it might be at least tangentially related... Could also be something else, since I also had the same issue when accessing the VM via ssh.
jumpyapple commentedon Aug 6, 2021
Run into the same issue trying to setup lua in a docker container. Here are some artifacts from me digging into the issue.
Build output:
jumpyapple commentedon Aug 6, 2021
Some more output when
CMAKE_BUILD_TYPE=Debugfor luvi.The actual location in libuv repository get moved by this commit libuv/libuv@caf22dd
Bilal2453 commentedon Mar 26, 2026
I suspect this has been likely fixed as of Luvi 2.15.0, testing with latest Lit.
Not entirely sure what fixes it, but it is either a luv update or some other segfault fix, potentially might've been related to #332 as well which is what I suspect frankly.