[colm] segfault during iter on stdin [noob]
peter.reijnders at verpeteren.nl
peter.reijnders at verpeteren.nl
Wed Jan 17 13:08:17 UTC 2018
Hello
I tried to pickup colm because I realy like its potential.
Due to the lack of examples and documentation I am fiddeling along and I
am currently stuck with a simple task.
I try to parse a simple list with bullets and get a segfault.
A simple markdown file 'input.md':
```
* A list:
* thing 1
* thing 2:
* thing 2a
* thing 3
* Another list:
* thang 1
* thang 2:
* thang 2a
* thang 3
```
A simple script 'bullets.lm':
```colm
#!/usr/bin/env colm
lex
#ignore /space+/
literal `* `: `\n `\t
token ws / ' ' /
token bullet / '*' /
token colon / ':' /
token newline / '\n' /
token tab / 't' /
token indent / tab* /
token identifier /[a-zA-Z_]+/
end
def item
[bullet ws+ identifier ws* newline]
| [bullet ws+ itemlist]
def itemlist
[identifier ws* colon ws* newline itemlist]
def itemlists
[itemlist newline+ itemlists]
| [itemlist]
| []
parse Input: itemlists[ stdin ]
for Id: itemlist in Input {
print( Id.identifier )
}
```
It compiles without problems, but crashes in the for loop.
```bash
$colm bullets.lm
$gdb ./bullets
...
(gdb) run <input.md
Starting program: /redacted/bullets <input.md
Program received signal SIGSEGV, Segmentation fault.
0x00007ffff7bafdb3 in iter_find (prg=0x55555575c010, psp=0x7fffffffbdc8,
iter=0x55555576c160, try_first=1)
at iter.c:363
363 if ( try_first && ( iter->ref.kid->tree->id == iter->search_id ||
any_tree ) ) {
(gdb) bt
#0 0x00007ffff7bafdb3 in iter_find (prg=0x55555575c010,
psp=0x7fffffffbdc8, iter=0x55555576c160,
try_first=1) at iter.c:363
#1 0x00007ffff7bb0090 in tree_iter_advance (prg=0x55555575c010,
psp=0x7fffffffbdc8, iter=0x55555576c160)
at iter.c:401
#2 0x00007ffff7bbc0bb in colm_execute_code (prg=0x55555575c010,
exec=0x7fffffffe080, sp=0x55555576c160,
instr=0x555555758736 <parser_rootCode+54> "\270\r") at
bytecode.c:1998
#3 0x00007ffff7bb1fbb in colm_execute (prg=0x55555575c010,
exec=0x7fffffffe080,
code=0x555555758700 <parser_rootCode> "\378\b\001") at
bytecode.c:413
#4 0x00007ffff7bcee18 in colm_run_program2 (prg=0x55555575c010, argc=1,
argv=0x7fffffffe218, argl=0x0)
at program.c:218
#5 0x00007ffff7bcee5f in colm_run_program (prg=0x55555575c010, argc=1,
argv=0x7fffffffe218) at program.c:227
#6 0x0000555555556d8c in main (argc=1, argv=0x7fffffffe218) at
bullets.c:799
(gdb)
```
What am I doing wrong?
I am using a freshly cloned colm version '83e3cbcb25' and gcc version
'(Debian 6.3.0-18) 6.3.0 20170516'.
.
I'd apreciate some tips.
Peter Reijnders
More information about the colm-users
mailing list