octave-maintainers
[Top][All Lists]
Advanced

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

Re: New parser and command line functions


From: Rik
Subject: Re: New parser and command line functions
Date: Fri, 15 Mar 2013 09:10:30 -0700

On 03/14/2013 09:13 PM, John W. Eaton wrote:
> On 03/13/2013 05:57 PM, Rik wrote:
>> On 03/13/2013 02:17 PM, John W. Eaton wrote:
>>> On 03/13/2013 05:02 PM, Michael D. Godfrey wrote:
>>>
>>>>> Can you duplicate the problem when running with gdb and generate a
>>>>> stack trace?
>>>> octave:1>  function y = mysin (x)
>>>>   >  y = sin (x);
>>>>   >  endfunction
>>>> octave: interpfcn/symtab.h:2039: static void
>>>> symbol_table::set_curr_fcn(octave_user_function*,
>>>> symbol_table::scope_id): Assertion `scope != xtop_scope&&  scope !=
>>>> xglobal_scope' failed.
>>>>
>>>> (gdb) bt
>>>> #0 0x000000314f235ba5 in __GI_raise (address@hidden) at
>>>> ../nptl/sysdeps/unix/sysv/linux/raise.c:63
>>>> #1 0x000000314f237358 in __GI_abort () at abort.c:90
>>>> #2 0x000000314f22e972 in __assert_fail_base (fmt=0x314f3793e8
>>>> "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n",
>>>> address@hidden "scope != xtop_scope&&  scope
>>>> != xglobal_scope",
>>>> address@hidden "interpfcn/symtab.h",
>>>> address@hidden, address@hidden
>>>> 0x7ffff7661bc0<symbol_table::set_curr_fcn(octave_user_function*,
>>>> int)::__PRETTY_FUNCTION__>  "static void
>>>> symbol_table::set_curr_fcn(octave_user_function*,
>>>> symbol_table::scope_id)") at assert.c:92
>>>> #3 0x000000314f22ea22 in __GI___assert_fail (assertion=
>>>> 0x7ffff7661938 "scope != xtop_scope&&  scope != xglobal_scope", file=
>>>> 0x7ffff765e79c "interpfcn/symtab.h", line=2039, function=
>>>> 0x7ffff7661bc0<symbol_table::set_curr_fcn(octave_user_function*,
>>>> int)::__PRETTY_FUNCTION__>  "static void
>>>> symbol_table::set_curr_fcn(octave_user_function*,
>>>> symbol_table::scope_id)") at assert.c:101
>>>> #4 0x00007ffff6a6f6b7 in symbol_table::set_curr_fcn
>>>> (address@hidden, address@hidden)
>>>> at interpfcn/symtab.h:2039
>>>> #5 0x00007ffff6a6b366 in octave_user_function::octave_user_function
>>>> (this=0x79fe30, sid=1, pl=0xa8fdd0, rl=
>>>> 0x0, cl=0xa7f520) at octave-value/ov-usr-fcn.cc:205
>>>
>>> Could you step up to this point (the octave_user_function constructor)
>>> and examine the value of local_scope that is passed to
>>> symbol_table::set_curr_fcn?
>>>
>>> My guess is that we are no longer setting the scope of the new function
>>> correctly.  If not, then I have no idea why this is working for me...
>> John,
>>
>> I'm also running 64-bit, gcc is 4.4.3.
>>
>> I set a breakpoint at symtab.h:2039, the assert line.  The variables are
>> scope: 1
>> xtop_scope: 1
>> xglobal_scope: 0
>>
>> So the conditions for the assert are being met (scope == xtop_scope) which
>> shouldn't happen.
>
> OK, so somehow a new scope for the function is not being allocated as it
> should.
>
> The scope for a function is supposed to be allocated in the
> push_fcn_symtab rule in oct-parse.in.yy.  Could you check to see whether
> that action is being executed when you enter a function on the command line?
>
> What version of Bison are you using?
>
> jwe
>
I thought it might be something like that so I have tried various versions
of Bison (2.4.1, 2.5.0, 2.6.5, 2.7.0) but I always get the same segfault. 
Octave has been compiled with both -O2 which might re-order things, but
also '-g -O0' which shouldn't.  Michael and I are using different versions
of gcc.  I'm quite a ways back on 4.4.3 and he is up on 4.7 something.

--Rik



reply via email to

[Prev in Thread] Current Thread [Next in Thread]