I have an odd reproducible crash with joe 4.3 as found in Fedora
Steps to reproduce:
print "set interfaces $port unit $vn family inet unnumbered-address lo0.2002\n";Core was generated by `joe test2.pl'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0x0000557970fcfd78 in parse (syntax=syntax@entry=0x557900000000,
line=line@entry=0x5579722c2c00, h_state=..., charmap=0x557972229830) at syntax.c:162
162 h = (stack ? stack->syntax : syntax)->states[h_state.state];
(gdb) bt full
#0 0x0000557970fcfd78 in parse (syntax=syntax@entry=0x557900000000, line=line@entry=0x5579722c2c00, h_state=..., charmap=0x557972229830) at syntax.c:162
stack = 0x0
h = <optimized out>
buf = {0 <repeats 80 times>}
lbuf = {0 <repeats 38 times>, 1, 0, 0, 0, 756869856, 32764, 756869840, 32764, 1895710416, 21881, 756870232, 32764, 0, 0, 1895710419, 21881, 740696361, 32703, 0, 0, 0, 0, 0, 0, 0, 0, 756868664, 32764, 0, 0, 756868704, 32764, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 1, 0, 0, 0, -4, 21881, 0, 32764, 1, 0, 756868784, 32764, 0, 0, 3432, 0, 5, 0, 1895710417, 21881, 1, 11, 0, 0, 1895710420, 21881, 0 <repeats 14 times>, 40, 48, 756870448, 32764, 756870256, 32764, 0 <repeats 112 times>}
lsaved_s = {0 <repeats 38 times>, 748827008, 32703, 0, 0, 1895471968, 21881, 0 <repeats 34 times>, 1471508224, -758176244, 10000, 0, 1895476720, 21881, 744307504, 32703, 1915010538, 21881, -756869599, -32765, 0, 0, 0, 0, 0, 1, 1915490592, 21881, 744293312, 32703, 10, 0, 1915490592, 21881, 0, 0, 1471508224, -758176244, 1895760845, 21881, 1915025120, 21881, 1024, 0, 0, 0, 1915445840, 21881, 1915025120, 21881, 1, 0, 1895442555, 21881, 0, 822083584, 1471508224, -758176244, 756869776, 32764, 756869776, 32764, 756870464, 32764, 1895710509, 21881, 756870152, 32764, 1, 0, 79, 0, 741518070, 32703, -72515583, 822083584, 756870464, 32764, 756869856, 32764, 756869856, 32764, 756870544, 32764, 1895710416, 21881, 756870232, 32764, 1, 0, 79, 0, 741518070, 32703, -72515583, 0, 756870544, 32764, 756870544, 32764, 756870544, 32764, 756870544, 32764, 756870550, 32764, 756870623, 32764, 756870544, 32764, 756870623, 32764, 0, 0, 744307448, 32703, 756870015, 32764, 744307504, 32703, 756870016, 32764, -756870015, -32765, 1895450091, 21881, 0, 0, 0, 0, 1, 0, 740964442, 32703, -1, -1, 0, 0, 1895710450, 21881, 0, 0, -1, 21881, 744307424, 32703, 744307424, 32703, 12304, 0, 1916199296, 21881, 1915490608, 21881, 1915496912, 21881, 740916671, 32703, 8560, 0, 12288, 0, 756870240, 32764, 756870239, 32764, 10, 0, 1895658371, 21881}
buf_idx = <optimized out>
c = <optimized out>
attr = <optimized out>
attr_end = <optimized out>
buf_en = <optimized out>
ofst = <optimized out>
mark1 = <optimized out>
mark2 = <optimized out>
mark_en = <optimized out>
recolor_delimiter_or_keyword = <optimized out>
#1 0x0000557970fd6d6e in lattr_get (db=0x557972283720, y=0x557900000000, p=p@entry=0x5579722c29d0, line=1) at lattr.c:303
ln = 1
tmp = 0x5579722c2c00
state = <optimized out>
#2 0x0000557970fad32e in get_context (bw=0x55797236e180, bw=0x55797236e180) at tw.c:72
db = <optimized out>
buf1 = {112, 114, 105, 110, 116, 32, 34, 115, 101, 116, 32, 105, 110, 116, 101, 114, 102, 97, 99, 101, 115, 32, 36, 112, 111, 114, 116, 32, 117, 110, 105, 116, 32, 36, 118, 110, 32, 102, 97, 109, 105, 108, 121, 32, 105, 110, 101, 116, 32, 117, 110, 110, 117, 109, 98, 101, 114, 101, 100, 45, 97, 100, 100, 114, 101, 115, 115, 32, 108, 111, 48, 46, 50, 48, 48, 50, 92, 92, 110, 34}
src = <optimized out>
p = 0x5579722c29d0
st = {stack = <optimized out>, saved_s = 0x0, state = <optimized out>}
buf1 = {112, 114, 105, 110, 116, 32, 34, 115, 101, 116, 32, 105, 110, 116, 101, 114, 102, 97, 99, 101, 115, 32, 36, 112, 111, 114, 116, 32, 117, 110, 105, 116, 32, 36, 118, 110, 32, 102, 97, 109, 105, 108, 121, 32, 105, 110, 101, 116, 32, 117, 110, 110, 117, 109, 98, 101, 114, 101, 100, 45, 97, 100, 100, 114, 101, 115, 115, 32, 108, 111, 48, 46, 50, 48, 48, 50, 92, 92, 110, 34}
#3 stagen (stalin=0x5579722c1130 "\\i^[ I A test2.pl (Modified)(perl) ", bw=bw@entry=0x55797236e180, s=0x55797222389b "x", fill=fill@entry=32 ' ') at tw.c:231
buf = "(perl)", '\000' <repeats 73 times>
x = <optimized out>
field = <optimized out>
w = <optimized out>
n = 1474908408
cas = <optimized out>
#4 0x0000557970fae499 in disptw (w=0x55797235a560, flg=1) at tw.c:599
bw = 0x55797236e180
tw = 0x55797235a630
#5 0x0000557970f986b8 in edupd (flg=1) at main.c:67
w = 0x55797235a560
wid = 211
hei = 48
#6 0x0000557970f9884b in edloop (flg=0) at main.c:134
w = <optimized out>
m = <optimized out>
c = <optimized out>
word_off = <optimized out>
bw = <optimized out>
auto_off = <optimized out>
spaces_off = <optimized out>
term = 0
ret = 0
#7 0x0000557970f867e9 in main (argc=<optimized out>, real_argv=<optimized out>, envv=<optimized out>) at main.c:678
cap = <optimized out>
argv = <optimized out>
sbuf = {st_dev = 2049, st_ino = 6818213, st_nlink = 1, st_mode = 33188, st_uid = 0, st_gid = 0, __pad0 = 0, st_rdev = 0, st_size = 45837, st_blksize = 4096, st_blocks = 96, st_atim = {tv_sec = 1472734201, tv_nsec = 0}, st_mtim = {tv_sec = 1472734201, tv_nsec = 0}, st_ctim = {tv_sec = 1474907169, tv_nsec = 519672595}, __glibc_reserved = {0, 0, 0}}
s = <optimized out>
t = <optimized out>
time_rc = <optimized out>
run = <optimized out>
n = 0x55797224f6e0
opened = <optimized out>
omid = <optimized out>
backopt = <optimized out>
c = <optimized out>
filesonly = <optimized out>
Thanks for this error report!
The should now be fixed in Mercurial. The problem is the backslash- I have to quote each backslash before sending the context line to the display, but didn't account for this in the buffer size.