I think the problem is incorrect parsing. Note that there is no space between between the 'x' and the first '5'. you can also get a segfault if you use ⎕nc and a similar syntax. Its weird because ⎕nc5 and ⎕ex5 result in Domain errors as expected.
It looks like the stack trace for both these functions call the same underlying function that the stack trace ends on:
Value::to_varnames(std::vector<UCS_string, std::allocator<UCS_string> >&, bool) const
My C++ is too rusty to figure this out.
⎕nc5 5 ⍴ '3 3 '
====================================================
SEGMENTATION FAULT
----------------------------------------
----------------------------------------
0x7f0d74089ec5 __libc_start_main
0x4432d5 main
0x577b8d Workspace::immediate_execution(bool)
0x48ce1a Command::process_line()
0x48cef8 Command::do_APL_expression(UCS_string&)
0x497e9b Executable::execute_body() const
0x524af0 StateIndicator::run()
0x4cd254 Prefix::reduce_statements()
0x4cc54d Prefix::reduce_MISC_F_B_()
0x4f5fd1 Quad_NC::eval_B(Value_P)
0x574842 Value::to_varnames(std::vector<UCS_string, std::allocator<UCS_string> >&, bool) const
0x7f0d74e90c90
0x448227
========================================
====================================================
-------- Original Message --------
Subject: Re: [Bug-apl] segmentation fault in svn 639
From: Louis Chretien <
address@hidden>
Date: Sat, June 20, 2015 3:27 am
To:
address@hidden
Why would you want to EXpunge an _expression_? Isn’t Quad-EX used to delete APL objects?
The APL2 manual states that the argument should be the name of an APL object in quotes.
I agree the error message should not be as dire as a segfault, but the basic intent seems dubious…
Type this line:
⎕ex5 5 ⍴ '3 3 '
and then this segmentation error happens:
====================================================
SEGMENTATION FAULT
----------------------------------------
----------------------------------------
0x7f78c4e6aead __libc_start_main
0x454215 main
0x544885 Workspace::immediate_execution(bool)
0x490922 Command::process_line()
0x490107 Command::do_APL_expression(UCS_string&)
0x499890 Executable::execute_body() const
0x5051f0 StateIndicator::run()
0x4c2d9e Prefix::reduce_statements()
0x4c291f Prefix::reduce_MISC_F_B_()
0x4e2eee Quad_EX::eval_B(Value_P)
0x53eed0 Value::to_varnames(std::vector<UCS_string, std::allocator<UCS_string> >&, bool) const
0x7f78c5b9d0a0
0x458f7a
========================================
====================================================