Hi Mark, Thanks for reporting this. The bug has been recorded (in my
private tracker). Will aim to fix for 6.7.
Thanks,
Adrian
On 10-12-15 01:55 PM, Mark Tsuchida wrote:
Hi again,
On Tue, Dec 14, 2010 at 20:33, Mark Tsuchida<[email protected]> wrote:
Dear Adrian,
Thank you for sharing this great tool.
I am getting a segfault when running Ragel on my input file.
Below is the simplest input file I've been able to create that
triggers the segfault (sorry it's still rather complex).
Whether or not Ragel crashes seems to be (depending on other parts of
the input file) sometimes sensitive to the names given to actions (or
at least the length of those names), among other things. Any given
input file always gives the same result (segfault or no crash),
though.
Giving Ragel the -n or -m option appears to prevent the crash, at
least with the input shown below.
Both version 6.6 and the svn head (r1683) experience the same issue.
I'm on Mac OS X 10.6 and Regal was compiled with g++ 4.2.1 (Xcode
3.2.5) (arch is x86_64 (LP64)).
Please let me know if there is anything else I can provide to help
track this down.
Thanks,
Mark
$ cat test.rl
%%{
machine test;
action action1 {}
action action2 {}
nl = ("\r\n" | [\n\r]);
kw = "aaaaa";
ident = "bbbbb" @action1;
normal = (kw | ident);
first = ([^\n\r] @action1)* . nl;
cont = (
(" " @action1 when action1)* .
(((([^\n\r] @action1)*) . nl @action1) when action1)
);
special = first (cont when action2)** ;
main := (normal when action1) | (special when action1);
}%%
$ ragel test.rl
Segmentation fault
$ ragel -V test.rl
Segmentation fault
$ ragel -T0 test.rl
Segmentation fault
$ ragel -T1 test.rl
Segmentation fault
$ ragel -F0 test.rl
Segmentation fault
$ ragel -F1 test.rl
Segmentation fault
$ ragel -d test.rl
Segmentation fault
$ ragel -e test.rl
Segmentation fault
$ ragel -n test.rl # succeeds
$ ragel -m test.rl # succeeds
$
Here is a stack trace from the svn head version (trunk @ r1683):
(gdb) run test.rl
Starting program: /Users/mark/devel/ragel/trunk/ragel/ragel test.rl
Reading symbols for shared libraries ++. done
Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: KERN_INVALID_ADDRESS at address: 0x0000000000000048
0x00000001000161fb in NextTrans<TransAp>::load (this=0x7fff5fbfd788)
at fsmgraph.h:782
782 next = trans->next;
(gdb) where
#0 0x00000001000161fb in NextTrans<TransAp>::load
(this=0x7fff5fbfd788) at fsmgraph.h:782
#1 0x0000000100016255 in NextTrans<TransAp>::set
(this=0x7fff5fbfd788, t=0x20) at fsmgraph.h:790
#2 0x0000000100025612 in PairIter<TransAp, StateCond>::findNext
(this=0x7fff5fbfd770) at fsmgraph.h:901
#3 0x0000000100025dab in PairIter<TransAp, StateCond>::PairIter
(this=0x7fff5fbfd770, list1=0x20, list2=0x10030c700) at fsmgraph.h:854
#4 0x000000010002050a in FsmAp::findEmbedExpansions
(this=0x1003085d0, expansionli...@0x7fff5fbfd9e0,
destState=0x100309900, condAction=0x100301b60, sense=true) at
fsmgraph.cpp:1298
#5 0x0000000100021b28 in FsmAp::embedCondition (this=0x1003085d0,
m...@0x7fff5fbfda50, state=0x100309900, condAction=0x100301b60,
sense=true) at fsmgraph.cpp:1403
#6 0x00000001000222f5 in FsmAp::embedCondition (this=0x1003085d0,
state=0x100309900, condAction=0x100301b60, sense=true) at
fsmgraph.cpp:1389
#7 0x0000000100029e3a in FsmAp::allTransCondition (this=0x1003085d0,
condAction=0x100301b60, sense=true) at fsmap.cpp:872
#8 0x000000010000555a in FactorWithAug::assignConditions
(this=0x100305f20, graph=0x1003085d0) at parsetree.cpp:1176
#9 0x0000000100008f34 in FactorWithAug::walk (this=0x100305f20,
pd=0x1003006e0) at parsetree.cpp:1226
#10 0x0000000100009660 in Term::walk (this=0x100306010,
pd=0x1003006e0, lastInSeq=true) at parsetree.cpp:948
#11 0x000000010000986b in Expression::walk (this=0x100306040,
pd=0x1003006e0, lastInSeq=true) at parsetree.cpp:782
#12 0x0000000100009a75 in Join::walk (this=0x100306070,
pd=0x1003006e0) at parsetree.cpp:598
#13 0x0000000100008139 in Factor::walk (this=0x1003060a0,
pd=0x1003006e0) at parsetree.cpp:1790
#14 0x0000000100008226 in FactorWithNeg::walk (this=0x100306100,
pd=0x1003006e0) at parsetree.cpp:1710
#15 0x0000000100008c74 in FactorWithRep::walk (this=0x100306130,
pd=0x1003006e0) at parsetree.cpp:1624
#16 0x0000000100008e1e in FactorWithAug::walk (this=0x100306180,
pd=0x1003006e0) at parsetree.cpp:1212
#17 0x0000000100009660 in Term::walk (this=0x100306210,
pd=0x1003006e0, lastInSeq=true) at parsetree.cpp:948
#18 0x000000010000970b in Expression::walk (this=0x100306240,
pd=0x1003006e0, lastInSeq=true) at parsetree.cpp:738
#19 0x0000000100009a75 in Join::walk (this=0x100306270,
pd=0x1003006e0) at parsetree.cpp:598
#20 0x0000000100009c94 in MachineDef::walk (this=0x1003062a0,
pd=0x1003006e0) at parsetree.cpp:533
#21 0x0000000100007f33 in VarDef::walk (this=0x100306320,
pd=0x1003006e0) at parsetree.cpp:94
#22 0x000000010000d639 in ParseData::makeInstance (this=0x1003006e0,
gdNode=0x1003062c0) at parsedata.cpp:1062
#23 0x000000010000f648 in ParseData::makeAll (this=0x1003006e0) at
parsedata.cpp:1189
#24 0x0000000100010f4d in ParseData::prepareMachineGenTBWrapped
(this=0x1003006e0, graphDictEl=0x0) at parsedata.cpp:1396
#25 0x0000000100011040 in ParseData::prepareMachineGen
(this=0x1003006e0, graphDictEl=0x0) at parsedata.cpp:1369
#26 0x0000000100048d76 in InputData::prepareMachineGen
(this=0x7fff5fbfe750) at inputdata.cpp:191
#27 0x0000000100001e33 in process (i...@0x7fff5fbfe750) at main.cpp:478
#28 0x00000001000029b2 in main (argc=2, argv=0x7fff5fbfe820) at main.cpp:559
(gdb)
Mark
_______________________________________________
ragel-users mailing list
[email protected]
http://www.complang.org/mailman/listinfo/ragel-users
_______________________________________________
ragel-users mailing list
[email protected]
http://www.complang.org/mailman/listinfo/ragel-users