[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [bug-gawk] `exit' statement issue
From: |
Denis Shirokov |
Subject: |
Re: [bug-gawk] `exit' statement issue |
Date: |
Tue, 28 May 2013 01:14:25 +0300 |
sorry forgot to add:
the following error is occured while(in some cases) statement `exit' is used:
gawk: D:\CPU\DEV\PROJECT\_DS\_MAIN.GWK:2152: fatal: unwind_stack:
unexpected type `Node_var_array'
2013/5/28, Denis Shirokov <address@hidden>:
> Hi Arnold, Eli.
>
> This is bug report about `exit' statement.
>
> Unfortunately the gawk script source isn't simply. But I cannot
> reproduce it in other way:
> The source is attached as _main.gwk
>
> In the source see function test_uid:
>
> func test_uid( p,i) {
> #test_cfg()
> #return
>
> _fclass=_cfguid(p=_getuid(_classys),p,"pfx","sfx","abc")
> #_fclass=_cfguid(p=_getuid(_classys),_NOP,_NOP,_NOP,"",_classys)
> _conl("_fclass uid: " _getuid(_fclass)); _drawuid(_fclass)
> _conl("_classys uid: " _getuid(_classys))_drawuid(_classys)
> for ( i=1; i<82; i++ ) _conl(i ": " _getuid(_fclass))
> #<---- you
> see that _getuid() function is called 81 times; but at the 82nd time
> the internal script failure occurred - this is normal
>
>
> func _getuid(p) {
> if ( p in _UIDOBL ) { for ( _tptr in _UIDOBLV[_getuida0=_UIDOBL[p]]
> ) { delete _UIDOBLV[_getuida0][_tptr]; _CLASSPTR[_tptr]=p; return
> _tptr } }
> _CLASSPTR[_tptr=_UIDPFX[p]
> _getuid_i0(_UIDCNT[p],_UIDCHRL[_tptr=_UIDCHR[p]],_UIDCHRH[_tptr])
> _UIDSFX[p]]=p
> return _tptr }
>
> func _getuid_i0(p,UL,UH) { if ( ""==_tptr=UL[_UIDCNTL[p]] ) { for (
> _tptr in UH ) { delete UH[_tptr]; return (_UIDCNTH[p]=_tptr)
> (_UIDCNTL[p]=UL[""]) }
> _fatal("out of UID") } # <---- here is failure handler
> function call
> at 82nd time
> return _UIDCNTH[p] (_UIDCNTL[p]=_tptr) }
>
>
>
> func _fatal(t,d, A) {
> if ( _ERRLOG_FF ) {
> A["TYPE"]="FATAL"; A["TEXT"]=t
> _log(A,d) }
> if ( !d ) exit } # <---- here is the
> crash moment
>
>
> IMPORTANT!
>
> I see the same issue in gawk 3.17b that i was used before gawk 4.0.0
>
> Hope this can help.
>
> regards
> Denis Shirokov
>