Package: lua-socket Version: 3.0~rc1+git+321c0c9-1 Severity: normal Dear Maintainer,
I'm trying to use socket.http from mpv. My script looks like this: $ cat test.lua local http = require("socket.http") local url = "http://rohieb.name" print ("MARK") d,c,h = http.request(url) print (("HTTP %d"):format(c)) ... and works fine with the Lua 5.2 interpreter: $ lua5.2 test.lua MARK HTTP 200 However, when I use it with mpv, it segfaults on the http.request() line in timeout_markstart(), see the attached GDB session transcript. A simple fix would be to test for tm==0 in timeout_markstart(), but I'm not sure what is going on here and why tm is 0 to begin with. Cheers, - Roland -- System Information: Debian Release: stretch/sid APT prefers unstable-debug APT policy: (500, 'unstable-debug'), (500, 'testing-proposed-updates'), (500, 'testing-debug'), (500, 'testing'), (170, 'unstable'), (1, 'experimental') Architecture: amd64 (x86_64) Foreign Architectures: i386 Kernel: Linux 4.5.0-1-amd64 (SMP w/2 CPU cores) Locale: LANG=en_US.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Init: systemd (via /run/systemd/system) Versions of packages lua-socket depends on: ii libc6 2.22-7 lua-socket recommends no packages. lua-socket suggests no packages. -- no debconf information
$ gdb --args mpv --script=test.lua ~/Music/Moderat\ \'Bad\ Kingdom\'-3NPxqXMZq7o.mp4 Reading symbols from mpv...(no debugging symbols found)...done. (gdb) r Starting program: /usr/bin/mpv --script=test.lua /home/rohieb/Music/Moderat\ \'Bad\ Kingdom\'-3NPxqXMZq7o.mp4 [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". [New Thread 0x7fffd85d1700 (LWP 4030)] [New Thread 0x7fffd7dd0700 (LWP 4031)] [New Thread 0x7fffd75cf700 (LWP 4032)] [test] MARK Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 0x7fffd75cf700 (LWP 4032)] timeout_markstart (tm=0x0) at src/timeout.c:115 115 tm->start = timeout_gettime(); (gdb) bt #0 timeout_markstart (tm=0x0) at src/timeout.c:115 #1 0x00007fffd6bc5559 in buffer_meth_send (L=0x7fffcc000940, buf=0x7fffcc0495d0) at src/buffer.c:81 #2 0x00007ffff3489c4d in luaD_precall (L=L@entry=0x7fffcc000940, func=<optimized out>, func@entry=0x7fffcc011930, nresults=nresults@entry=-1) at ldo.c:319 #3 0x00007ffff349583d in luaV_execute (L=L@entry=0x7fffcc000940) at lvm.c:709 #4 0x00007ffff3489f8e in luaD_call (L=0x7fffcc000940, func=<optimized out>, nResults=<optimized out>, allowyield=<optimized out>) at ldo.c:402 #5 0x00007ffff34895cf in luaD_rawrunprotected (L=L@entry=0x7fffcc000940, f=f@entry=0x7ffff3484b70 <f_call>, ud=ud@entry=0x7fffd75ce600) at ldo.c:131 #6 0x00007ffff348a1d1 in luaD_pcall (L=L@entry=0x7fffcc000940, func=func@entry=0x7ffff3484b70 <f_call>, u=u@entry=0x7fffd75ce600, old_top=128, ef=<optimized out>) at ldo.c:603 #7 0x00007ffff34860f1 in lua_pcallk (L=L@entry=0x7fffcc000940, nargs=<optimized out>, nresults=nresults@entry=-1, errfunc=errfunc@entry=0, ctx=ctx@entry=0, k=k@entry=0x7fffd6bc9770 <protected_cont>) at lapi.c:949 #8 0x00007fffd6bc975f in protected_ (L=0x7fffcc000940) at src/except.c:107 #9 0x00007ffff3489c4d in luaD_precall (L=L@entry=0x7fffcc000940, func=<optimized out>, func@entry=0x7fffcc011810, nresults=nresults@entry=3) at ldo.c:319 #10 0x00007ffff349583d in luaV_execute (L=L@entry=0x7fffcc000940) at lvm.c:709 #11 0x00007ffff3489f8e in luaD_call (L=L@entry=0x7fffcc000940, func=<optimized out>, nResults=nResults@entry=0, allowyield=allowyield@entry=0) at ldo.c:402 #12 0x00007ffff348602b in lua_callk (L=0x7fffcc000940, nargs=<optimized out>, nresults=0, ctx=<optimized out>, k=<optimized out>) at lapi.c:905 #13 0x00005555555f0ac2 in ?? () #14 0x00007ffff3489c4d in luaD_precall (L=L@entry=0x7fffcc000940, func=<optimized out>, nresults=0) at ldo.c:319 #15 0x00007ffff3489f82 in luaD_call (L=0x7fffcc000940, func=<optimized out>, nResults=<optimized out>, allowyield=<optimized out>) at ldo.c:401 #16 0x00007ffff34895cf in luaD_rawrunprotected (L=L@entry=0x7fffcc000940, f=f@entry=0x7ffff3484b70 <f_call>, ud=ud@entry=0x7fffd75ce930) at ldo.c:131 #17 0x00007ffff348a1d1 in luaD_pcall (L=L@entry=0x7fffcc000940, func=func@entry=0x7ffff3484b70 <f_call>, u=u@entry=0x7fffd75ce930, old_top=48, ef=<optimized out>) at ldo.c:603 #18 0x00007ffff34860f1 in lua_pcallk (L=0x7fffcc000940, nargs=<optimized out>, nresults=0, errfunc=<optimized out>, ctx=<optimized out>, k=<optimized out>) at lapi.c:949 #19 0x00005555555f26bc in ?? () #20 0x00007ffff3489c4d in luaD_precall (L=L@entry=0x7fffcc000940, func=<optimized out>, nresults=0) at ldo.c:319 #21 0x00007ffff3489f82 in luaD_call (L=0x7fffcc000940, func=<optimized out>, nResults=<optimized out>, allowyield=<optimized out>) at ldo.c:401 #22 0x00007ffff34895cf in luaD_rawrunprotected (L=L@entry=0x7fffcc000940, f=f@entry=0x7ffff3484b70 <f_call>, ud=ud@entry=0x7fffd75ceb60) at ldo.c:131 #23 0x00007ffff348a1d1 in luaD_pcall (L=L@entry=0x7fffcc000940, func=func@entry=0x7ffff3484b70 <f_call>, u=u@entry=0x7fffd75ceb60, old_top=16, ef=<optimized out>) at ldo.c:603 #24 0x00007ffff34860f1 in lua_pcallk (L=0x7fffcc000940, nargs=<optimized out>, nresults=0, errfunc=<optimized out>, ctx=<optimized out>, k=<optimized out>) at lapi.c:949 #25 0x00005555555f2bb6 in ?? () #26 0x00005555555f7a99 in ?? () #27 0x00007ffff4925454 in start_thread (arg=0x7fffd75cf700) at pthread_create.c:334 #28 0x00007fffefd3ceed in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109 (gdb) p tm $1 = (p_timeout) 0x0 (gdb) up #1 0x00007fffd6bc5559 in buffer_meth_send (L=0x7fffcc000940, buf=0x7fffcc0495d0) at src/buffer.c:81 81 timeout_markstart(buf->tm); (gdb) p *buf $2 = {birthday = 0, sent = 0, received = 0, io = 0x0, tm = 0x0, first = 0, last = 0, data = '\000' <repeats 8191 times>} (gdb) q