lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


Sorry, hit enter too early. Should make a habit of filling out the address last.

So, I started writing a markdown (or a dialect thereof) to HTML
translator to play around with LPeg. The code is at:

https://github.com/sebcat/lpeg-markdown

While running markdown_test.lua, the interpreter crashes intermittently.

a commit that exhibits this problem, should the repo change:

git checkout c82794f8f2637ac4161f21113bbf4f23aa34906e

platform info:

$ uname -a
Linux genesis 4.6.6-200.fc23.x86_64 #1 SMP Wed Aug 10 23:13:35 UTC
2016 x86_64 x86_64 x86_64 GNU/Linux
$ lua -v
Lua 5.3.3  Copyright (C) 1994-2016 Lua.org, PUC-Rio
> lpeg = require "lpeg"
> lpeg.version()
1.0.0

Since the problem only occurs intermittently, I run markdown_test.lua as such:
#!/usr/bin/bash -e
while true; do
  ./markdown_test.lua
done

Looking at the core dump, I see:

#0  0x00007f3fb7060889 in hascaptures (tree=0x0) at lpcode.c:131
#1  0x00007f3fb706092c in hascaptures (tree=0x56012245c45c) at lpcode.c:144
#2  0x00007f3fb706092c in hascaptures (tree=0x56012245c454) at lpcode.c:144
#3  0x00007f3fb706092c in hascaptures (tree=0x56012245c1dc) at lpcode.c:144
#4  0x00007f3fb706092c in hascaptures (tree=0x56012245c46c) at lpcode.c:144
#5  0x00007f3fb706092c in hascaptures (tree=0x56012245c454) at lpcode.c:144
#6  0x00007f3fb706092c in hascaptures (tree=0x56012245c1dc) at lpcode.c:144
#7  0x00007f3fb706092c in hascaptures (tree=0x56012245c46c) at lpcode.c:144
#8  0x00007f3fb706092c in hascaptures (tree=0x56012245c454) at lpcode.c:144
#9  0x00007f3fb706092c in hascaptures (tree=0x56012245c1dc) at lpcode.c:144
#10 0x00007f3fb706092c in hascaptures (tree=0x56012245c46c) at lpcode.c:144
#11 0x00007f3fb706092c in hascaptures (tree=0x56012245c454) at lpcode.c:144
#12 0x00007f3fb706092c in hascaptures (tree=0x56012245c1dc) at lpcode.c:144
#13 0x00007f3fb706092c in hascaptures (tree=0x56012245c46c) at lpcode.c:144
#14 0x00007f3fb706092c in hascaptures (tree=0x56012245c454) at lpcode.c:144
#15 0x00007f3fb706092c in hascaptures (tree=0x56012245c1dc) at lpcode.c:144
#16 0x00007f3fb706092c in hascaptures (tree=0x56012245c46c) at lpcode.c:144
#17 0x00007f3fb706092c in hascaptures (tree=0x56012245c454) at lpcode.c:144
#18 0x00007f3fb706092c in hascaptures (tree=0x56012245c1dc) at lpcode.c:144
#19 0x00007f3fb706092c in hascaptures (tree=0x56012245c46c) at lpcode.c:144
#20 0x00007f3fb706092c in hascaptures (tree=0x56012245c454) at lpcode.c:144
#21 0x00007f3fb706092c in hascaptures (tree=0x56012245c1dc) at lpcode.c:144
#22 0x00007f3fb706092c in hascaptures (tree=0x56012245c46c) at lpcode.c:144
#23 0x00007f3fb706092c in hascaptures (tree=0x56012245c454) at lpcode.c:144
#24 0x00007f3fb706092c in hascaptures (tree=0x56012245c1dc) at lpcode.c:144
#25 0x00007f3fb706092c in hascaptures (tree=0x56012245c46c) at lpcode.c:144
#26 0x00007f3fb706092c in hascaptures (tree=0x56012245c454) at lpcode.c:144

[...]

#261630 0x00007f3fb706092c in hascaptures (tree=0x56012245c1dc) at lpcode.c:144
#261631 0x00007f3fb706092c in hascaptures (tree=0x56012245c18c) at lpcode.c:144
#261632 0x00007f3fb706092c in hascaptures (tree=0x56012245c10c) at lpcode.c:144
#261633 0x00007f3fb706092c in hascaptures (tree=0x56012245c674) at lpcode.c:144
#261634 0x00007f3fb7061c6e in codecapture (compst=0x7ffef2f91360,
tree=0x56012245c66c, tt=-1, fl=0x7ffef2f901a0) at lpcode.c:720
#261635 0x00007f3fb706266a in codegen (compst=0x7ffef2f91360,
tree=0x56012245c66c, opt=0, tt=-1, fl=0x7ffef2f901a0) at lpcode.c:905
#261636 0x00007f3fb7061af1 in codechoice (compst=0x7ffef2f91360,
p1=0x56012245c664, p2=0x56012245c66c, opt=0, fl=0x7ffef2f901a0) at
lpcode.c:682
#261637 0x00007f3fb70625db in codegen (compst=0x7ffef2f91360,
tree=0x56012245c65c, opt=0, tt=-1, fl=0x7ffef2f901a0) at lpcode.c:900
#261638 0x00007f3fb7062491 in codeseq1 (compst=0x7ffef2f91360,
p1=0x56012245c65c, p2=0x56012245c694, tt=-1, fl=0x7f3fb7063d40
<fullset_>) at lpcode.c:876
#261639 0x00007f3fb70626f3 in codegen (compst=0x7ffef2f91360,
tree=0x56012245c654, opt=0, tt=-1, fl=0x7f3fb7063d40 <fullset_>) at
lpcode.c:910
#261640 0x00007f3fb7061d18 in codecapture (compst=0x7ffef2f91360,
tree=0x56012245c64c, tt=-1, fl=0x7f3fb7063d40 <fullset_>) at
lpcode.c:726
#261641 0x00007f3fb706266a in codegen (compst=0x7ffef2f91360,
tree=0x56012245c64c, opt=0, tt=-1, fl=0x7f3fb7063d40 <fullset_>) at
lpcode.c:905
#261642 0x00007f3fb7061da0 in coderuntime (compst=0x7ffef2f91360,
tree=0x56012245c644, tt=-1) at lpcode.c:734
#261643 0x00007f3fb7062685 in codegen (compst=0x7ffef2f91360,
tree=0x56012245c644, opt=0, tt=-1, fl=0x7f3fb7063d40 <fullset_>) at
lpcode.c:906
#261644 0x00007f3fb70622f6 in codegrammar (compst=0x7ffef2f91360,
grammar=0x56012245c02c) at lpcode.c:850
#261645 0x00007f3fb706269d in codegen (compst=0x7ffef2f91360,
tree=0x56012245c02c, opt=0, tt=-1, fl=0x7f3fb7063d40 <fullset_>) at
lpcode.c:907
#261646 0x00007f3fb7061d18 in codecapture (compst=0x7ffef2f91360,
tree=0x56012245c024, tt=-1, fl=0x7f3fb7063d40 <fullset_>) at
lpcode.c:726
#261647 0x00007f3fb706266a in codegen (compst=0x7ffef2f91360,
tree=0x56012245c024, opt=0, tt=-1, fl=0x7f3fb7063d40 <fullset_>) at
lpcode.c:905
#261648 0x00007f3fb70629b1 in compile (L=0x560122446018,
p=0x56012245c018) at lpcode.c:977
#261649 0x00007f3fb705fd7d in prepcompile (L=0x560122446018,
p=0x56012245c018, idx=1) at lptree.c:1099
#261650 0x00007f3fb705ff7b in lp_match (L=0x560122446018) at lptree.c:1154
#261651 0x00007f3fb81d97aa in luaD_precall (L=L@entry=0x560122446018,
func=func@entry=0x560122456170, nresults=nresults@entry=1) at
ldo.c:365
#261652 0x00007f3fb81ef5fd in luaV_execute (L=L@entry=0x560122446018)
at lvm.c:1134
#261653 0x00007f3fb81d9b9f in luaD_call (L=L@entry=0x560122446018,
func=<optimized out>, nResults=<optimized out>) at ldo.c:496
#261654 0x00007f3fb81d9bf1 in luaD_callnoyield (L=0x560122446018,
func=<optimized out>, nResults=<optimized out>) at ldo.c:506
#261655 0x00007f3fb81d8fc2 in luaD_rawrunprotected
(L=L@entry=0x560122446018, f=f@entry=0x7f3fb81cf250 <f_call>,
ud=ud@entry=0x7ffef2f918a0) at ldo.c:142
#261656 0x00007f3fb81d9e7d in luaD_pcall (L=L@entry=0x560122446018,
func=func@entry=0x7f3fb81cf250 <f_call>, u=u@entry=0x7ffef2f918a0,
old_top=80, ef=<optimized out>)
    at ldo.c:727
#261657 0x00007f3fb81d0851 in lua_pcallk (L=0x560122446018, nargs=0,
nresults=-1, errfunc=<optimized out>, ctx=0, k=0x0) at lapi.c:968
#261658 0x0000560121f058ab in docall (L=0x560122446018, narg=0,
nres=-1) at lua.c:203
#261659 0x0000560121f0646c in handle_script (argv=<optimized out>,
L=0x560122446018) at lua.c:443
#261660 pmain (L=0x560122446018) at lua.c:577
#261661 0x00007f3fb81d97aa in luaD_precall (L=L@entry=0x560122446018,
func=0x560122446640, nresults=1) at ldo.c:365
#261662 0x00007f3fb81d9b93 in luaD_call (L=L@entry=0x560122446018,
func=<optimized out>, nResults=<optimized out>) at ldo.c:495
#261663 0x00007f3fb81d9bf1 in luaD_callnoyield (L=0x560122446018,
func=<optimized out>, nResults=<optimized out>) at ldo.c:506
#261664 0x00007f3fb81d8fc2 in luaD_rawrunprotected
(L=L@entry=0x560122446018, f=f@entry=0x7f3fb81cf250 <f_call>,
ud=ud@entry=0x7ffef2f91b40) at ldo.c:142
#261665 0x00007f3fb81d9e7d in luaD_pcall (L=L@entry=0x560122446018,
func=func@entry=0x7f3fb81cf250 <f_call>, u=u@entry=0x7ffef2f91b40,
old_top=16, ef=<optimized out>)
    at ldo.c:727
#261666 0x00007f3fb81d0851 in lua_pcallk (L=0x560122446018, nargs=2,
nresults=1, errfunc=<optimized out>, ctx=0, k=0x0) at lapi.c:968
#261667 0x0000560121f0565b in main (argc=2, argv=0x7ffef2f91c88) at lua.c:603

I'm not familiar enough with LPeg or PEG in general to know what's
causing the crash. Any ideas?

Again, sorry for sending a partial e-mail earlier.

//Sebastian Cato

On Sun, Sep 11, 2016 at 6:12 PM, Sebastian Cato <seb.cato@gmail.com> wrote:
>
> Hello,
>
> I started writing a markdown (or a dialect thereof) to HTML translator to play around with LPeg.
>