enigma-devel
[Top][All Lists]
Advanced

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

Re: [Enigma-devel] Lua 5.1 "luaL_error" problems on Windows


From: Ronald Lamprecht
Subject: Re: [Enigma-devel] Lua 5.1 "luaL_error" problems on Windows
Date: Thu, 29 Jun 2006 17:35:46 +0200
User-agent: Mozilla Thunderbird 1.0.7 (Windows/20050923)

Hi,

Daniel Heck schrieb:
It would also explain the consistancy. The quickest way to tell is to use --disable-nls.

I tested that. Besides a few small tweaks that are needed to make it
compile using with that, it worked.
The resulting exe also crashed.

So my next guess is an uncaught C++ exception.

A few weeks ago I managed to compile Enigma using the Visual Studio Express.  I 
have not checked in all the changes that were necessary, but I can try to 
reproduce this error to see if it is actually a mingw bug.  I will be back in 
Germany on Saturday, so maybe I can take a look at it during the weekend.


This crosscheck would be helpfull.

Meanwhile I succeeded in running Enigma on Windows under the control of gdb (still just with the commandline interface).

I examined the switch callback function situation with a call of

enigma.GetAttrib(sender, "notexisting")

Please find attached the backtrace and a step protocol that starts after world.cc 1405 called lua::CallFunc at the end of processing
lua.cc 664.

The segmentation fault occurs at

luaO_pushvfstring (L=0x5d03c48, fmt=0x878103 "%s:%d: ", argp=0x22eb90 "(£}")
    at lobject.c:166

somewhere in the lua error handling routines where Lua reallocs memory and handles strings.

At least in this case it looks like a serious bug in Lua that happens to show up by chance only on Windows.

@Tacvek - can you read more out of the step protocol? Can you communicate this problem to the Lua community?

- Ronald
Switch Callback with notexisting attribute call.

(gdb) backtrace
#0  0x778b7e75 in ?? ()
#1  0x0070ca9c in _Unwind_SjLj_RaiseException ()
#2  0x00702b75 in __cxa_throw ()
#3  0x0049a717 in world::PerformAction(world::Object*, bool) (o=0x5f10e10, 
    onoff=true) at world.cc:1406
#4  0x0077ec8e in (anonymous namespace)::SwitchStone::set_on(bool) (
    this=0x5f10e10, newon=true) at st_switches.cc:61
#5  0x0077ecf3 in (anonymous 
namespace)::SwitchStone::actor_hit(world::StoneContact const&) (this=0x5f10e10) 
at st_switches.cc:49
#6  0x00496b06 in world::World::handle_stone_contact(world::StoneContact&) (
    this=0x5e3e508, address@hidden) at world.cc:823
#7  0x0049779a in world::World::handle_contacts(unsigned) (this=0x5e3e508, 
    actoridx=0) at world.cc:941
#8  0x00497acc in world::World::move_actors(double) (this=0x5e3e508, 
    dtime=0.01) at world.cc:978
#9  0x00495420 in world::World::tick(double) (this=0x5e3e508, dtime=0.01)
    at world.cc:503
#10 0x0049c4fd in world::Tick(double) (dtime=0.01) at world.cc:1754
#11 0x0046d3e4 in gametick(double) (dtime=0.01) at server.cc:172
#12 0x0046dffd in enigma_server::Tick(double) (dtime=0.01) at server.cc:293
#13 0x00429e52 in enigma_game::StartGame(enigma_levels::LevelPack*, unsigned) (
    lp=0x395e2b0, ilevel=8) at game.cc:90
#14 0x004bb7bd in enigma::gui::LevelMenu::on_action(enigma::gui::Widget*) (
    this=0x22fa40, w=0x5e227a8) at gui/LevelMenu.cc:207
#15 0x004bfec0 in enigma::gui::LevelWidget::trigger_action() (this=0x5e227a8)
    at gui/LevelWidget.cc:250
#16 0x004c1b32 in enigma::gui::LevelWidget::handle_mousedown(SDL_Event const*)
    (this=0x5e227a8, e=0x22f9b0) at gui/LevelWidget.cc:589
#17 0x004c17e2 in enigma::gui::LevelWidget::on_event(SDL_Event const&) (
    this=0x5e227a8, address@hidden) at gui/LevelWidget.cc:562
#18 0x004bb66b in enigma::gui::LevelMenu::on_event(SDL_Event const&) (
    this=0x22fa40, address@hidden) at gui/LevelMenu.cc:174
#19 0x004c6319 in enigma::gui::Menu::handle_event(SDL_Event const&) (
    this=0x22fa40, address@hidden) at gui/Menu.cc:115
#20 0x004c5eba in enigma::gui::Menu::manage() (this=0x22fa40) at gui/Menu.cc:69
#21 0x004c3c3d in enigma::gui::MainMenu::on_action(enigma::gui::Widget*) (
    this=0x22fd10, w=0x5da87b0) at gui/MainMenu.cc:171
#22 0x004d0a4c in enigma::gui::Widget::invoke_listener() (this=0x5da87b0)
    at gui/widgets.cc:59
#23 0x004d3326 in enigma::gui::PushButton::on_event(SDL_Event const&) (
    this=0x5da87b0, address@hidden) at gui/widgets.cc:576
#24 0x004c64c6 in enigma::gui::Menu::handle_event(SDL_Event const&) (
    this=0x22fd10, address@hidden) at gui/Menu.cc:145
#25 0x004c5eba in enigma::gui::Menu::manage() (this=0x22fd10) at gui/Menu.cc:69
#26 0x004c5a8a in enigma::gui::ShowMainMenu() () at gui/MainMenu.cc:408
#27 0x00455bc1 in SDL_main (argc=1, argv=0x22fe70) at main.cc:634
#28 0x006ff590 in console_main (argc=1, argv=0x22fe70)
    at win32/SDL_win32_main.c:249
#29 0x006ff755 in WinMain (hInst=0x400000, hPrev=0x0, szCmdLine=0x233159 "", 
    sw=10) at win32/SDL_win32_main.c:361
#30 0x006ff08a in main ()
(gdb) 

Stepprotcol:
starts after world.cc 1405 called lua::CallFunc at the end of processing 
lua.cc 664
[...]
458         if (ttisstring(gkey(n)) && rawtsvalue(gkey(n)) == key)
(gdb) 
463     }
(gdb) 
luaH_get (t=0x5c227e8, key=0x22ef00) at ltable.c:491
491     }
(gdb) 
luaV_gettable (L=0x5d03c48, t=0x5d03c90, key=0x22ef00, val=0x5ceb210)
    at lvm.c:117
117           if (!ttisnil(res) ||  /* result is no nil? */
(gdb) 
119             setobj2s(L, val, res);
(gdb) 
133     }
(gdb) 
lua_getfield (L=0x5d03c48, idx=-10002, k=0x5d13e34 "test") at lapi.c:545
545       api_incr_top(L);
(gdb) 
546       lua_unlock(L);
(gdb) 
lua::CallFunc(lua_State*, char const*, enigma::Value const&, world::Object*) (
    L=0x5d03c48, funcname=0x5d13e34 "test", address@hidden, obj=0x5d13b90)
    at lua.cc:665
665         push_value(L, arg);
Current language:  auto; currently c++
(gdb) 
push_value(lua_State*, enigma::Value const&) (L=0x5d03c48, address@hidden)
    at lua.cc:108
108         switch (val.get_type()) {
(gdb) 
enigma::Value::get_type() const (this=0x22f030) at enigma.hh:141
141             Type    get_type() const { return type; }
(gdb) 
push_value(lua_State*, enigma::Value const&) (L=0x5d03c48, address@hidden)
    at lua.cc:110
110         case Value::DOUBLE: lua_pushnumber(L, to_double(val)); break;
(gdb) 
enigma::to_double(enigma::Value const&) (address@hidden) at enigma.cc:228
228         switch (v.get_type()) {
(gdb) 
enigma::Value::get_type() const (this=0x22f030) at enigma.hh:141
141             Type    get_type() const { return type; }
(gdb) 
enigma::to_double(enigma::Value const&) (address@hidden) at enigma.cc:229
229         case Value::DOUBLE: return v.get_double();
(gdb) 
enigma::Value::get_double() const (this=0x22f030) at enigma.cc:155
155         assert(type == DOUBLE);
(gdb) 
156         return val.dval;
(gdb) 
157     }
(gdb) 
enigma::to_double(enigma::Value const&) (address@hidden) at enigma.cc:233
233     }
(gdb) 
lua_pushnumber (L=0x5d03c48, n=1) at lapi.c:422
422     LUA_API void lua_pushnumber (lua_State *L, lua_Number n) {
Current language:  auto; currently c
(gdb) 
424       setnvalue(L->top, n);
(gdb) 
425       api_incr_top(L);
(gdb) 
424       setnvalue(L->top, n);
(gdb) 
426       lua_unlock(L);
(gdb) 
push_value(lua_State*, enigma::Value const&) (L=0x5d03c48, address@hidden)
    at lua.cc:113
113     }
Current language:  auto; currently c++
(gdb) 
lua::CallFunc(lua_State*, char const*, enigma::Value const&, world::Object*) (
    L=0x5d03c48, funcname=0x5d13e34 "test", address@hidden, obj=0x5d13b90)
    at lua.cc:666
666         pushobject(L, obj);
(gdb) 
pushobject(lua_State*, world::Object*) (L=0x5d03c48, obj=0x5d13b90)
    at lua.cc:153
153         if (obj == 0)
(gdb) 
157             udata=(Object**)lua_newuserdata(L,sizeof(int));
(gdb) 
lua_newuserdata (L=0x5d03c48, size=4) at lapi.c:1015
1015    LUA_API void *lua_newuserdata (lua_State *L, size_t size) {
Current language:  auto; currently c
(gdb) 
1018      luaC_checkGC(L);
(gdb) 
1019      u = luaS_newudata(L, size, getcurrenv(L));
(gdb) 
getcurrenv (L=0x5d03c48) at lapi.c:79
79      static Table *getcurrenv (lua_State *L) {
(gdb) 
80        if (L->ci == L->base_ci)  /* no enclosing function? */
(gdb) 
79      static Table *getcurrenv (lua_State *L) {
(gdb) 
getcurrenv (L=0x5d03c48) at lapi.c:80
80        if (L->ci == L->base_ci)  /* no enclosing function? */
(gdb) 
getcurrenv (L=0x5d03c48) at lapi.c:81
81          return hvalue(gt(L));  /* use global table as environment */
(gdb) 
86      }
(gdb) 
luaS_newudata (L=0x5d03c48, s=4, e=0x5c227e8) at lstring.c:96
96      Udata *luaS_newudata (lua_State *L, size_t s, Table *e) {
(gdb) 
98        if (s > MAX_SIZET - sizeof(Udata))
(gdb) 
100       u = cast(Udata *, luaM_malloc(L, s + sizeof(Udata)));
(gdb) 
luaM_realloc_ (L=0x5d03c48, block=0x0, osize=0, nsize=28) at lmem.c:77
77        global_State *g = G(L);
(gdb) 
76      void *luaM_realloc_ (lua_State *L, void *block, size_t osize, size_t 
nsize) {
(gdb) 
77        global_State *g = G(L);
(gdb) 
79        block = (*g->frealloc)(g->ud, block, osize, nsize);
(gdb) 
l_alloc (ud=0x0, ptr=0x0, osize=0, nsize=28) at lauxlib.c:622
622     static void *l_alloc (void *ud, void *ptr, size_t osize, size_t nsize) {
(gdb) 
625       if (nsize == 0) {
(gdb) 
630         return realloc(ptr, nsize);
(gdb) 
631     }
(gdb) 
l_alloc (ud=0x5d03c48, ptr=0x0, osize=0, nsize=28) at lauxlib.c:630
630         return realloc(ptr, nsize);
(gdb) 
luaM_realloc_ (L=0x5d03c48, block=0x0, osize=0, nsize=28) at lmem.c:80
80        if (block == NULL && nsize > 0)
(gdb) 
79        block = (*g->frealloc)(g->ud, block, osize, nsize);
(gdb) 
80        if (block == NULL && nsize > 0)
(gdb) 
83        g->totalbytes = (g->totalbytes - osize) + nsize;
(gdb) 
85      }
(gdb) 
luaS_newudata (L=0x5d03c48, s=4, e=0x5c227e8) at lstring.c:101
101       u->uv.marked = luaC_white(G(L));  /* is not finalized */
(gdb) 
102       u->uv.tt = LUA_TUSERDATA;
(gdb) 
103       u->uv.len = s;
(gdb) 
104       u->uv.metatable = NULL;
(gdb) 
101       u->uv.marked = luaC_white(G(L));  /* is not finalized */
(gdb) 
105       u->uv.env = e;
(gdb) 
107       u->uv.next = G(L)->mainthread->next;
(gdb) 
108       G(L)->mainthread->next = obj2gco(u);
(gdb) 
110     }
(gdb) 
lua_newuserdata (L=0x5d03c48, size=4) at lapi.c:1020
1020      setuvalue(L, L->top, u);
(gdb) 
1023      return u + 1;
(gdb) 
1021      api_incr_top(L);
(gdb) 
1020      setuvalue(L, L->top, u);
(gdb) 
1024    }
(gdb) 
pushobject(lua_State*, world::Object*) (L=0x5d03c48, obj=0x5d13b90)
    at lua.cc:158
158             *udata=obj;
Current language:  auto; currently c++
(gdb) 
159             luaL_getmetatable(L, "_ENIGMAOBJECT");
(gdb) 
lua_getfield (L=0x5d03c48, idx=-10000, k=0x86cb11 "_ENIGMAOBJECT")
    at lapi.c:541
541       t = index2adr(L, idx);
Current language:  auto; currently c
(gdb) 
537     LUA_API void lua_getfield (lua_State *L, int idx, const char *k) {
(gdb) 
541       t = index2adr(L, idx);
(gdb) 
index2adr (L=0x22ffe0, idx=-10000) at lapi.c:49
49      static TValue *index2adr (lua_State *L, int idx) {
(gdb) 
50        if (idx > 0) {
(gdb) 
49      static TValue *index2adr (lua_State *L, int idx) {
(gdb) 
50        if (idx > 0) {
(gdb) 
56        else if (idx > LUA_REGISTRYINDEX) {
(gdb) 
60        else switch (idx) {  /* pseudo-indices */
(gdb) 
61          case LUA_REGISTRYINDEX: return registry(L);
(gdb) 
76      }
(gdb) 
index2adr (L=0x5d03c48, idx=97533120) at lapi.c:61
61          case LUA_REGISTRYINDEX: return registry(L);
(gdb) 
76      }
(gdb) 
lua_getfield (L=0x5d03c48, idx=-10000, k=0x86cb11 "_ENIGMAOBJECT")
    at lapi.c:543
543       setsvalue(L, &key, luaS_new(L, k));
(gdb) 
541       t = index2adr(L, idx);
(gdb) 
543       setsvalue(L, &key, luaS_new(L, k));
(gdb) 
luaS_newlstr (L=0x5d03c48, str=0x86cb11 "_ENIGMAOBJECT", l=13) at lstring.c:77
77        unsigned int h = cast(unsigned int, l);  /* seed */
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
78        size_t step = (l>>5)+1;  /* if string is too long, don't hash all its 
chars */
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 

80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 81            h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 

80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 81            h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 

80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 81            h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 

80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 81            h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 

80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 81            h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 

80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 81            h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
82        for (o = G(L)->strt.hash[lmod(h, G(L)->strt.size)];
(gdb) 
86          if (ts->tsv.len == l && (memcmp(str, getstr(ts), l) == 0)) {
(gdb) 
88            if (isdead(G(L), o)) changewhite(o);
(gdb) 
93      }
(gdb) 
51                                             unsigned int h) {
(gdb) 
93      }
(gdb) 
lua_getfield (L=0x5d03c48, idx=-10000, k=0x86cb11 "_ENIGMAOBJECT")
    at lapi.c:544
544       luaV_gettable(L, t, &key, L->top);
(gdb) 
543       setsvalue(L, &key, luaS_new(L, k));
(gdb) 
544       luaV_gettable(L, t, &key, L->top);
(gdb) 
luaV_gettable (L=0x994b7a88, t=0x5d03d20, key=0x5d03cc0, val=0x5c227e8)
    at lvm.c:112
112       for (loop = 0; loop < MAXTAGLOOP; loop++) {
(gdb) 
110     void luaV_gettable (lua_State *L, const TValue *t, TValue *key, StkId 
val) {
(gdb) 
114         if (ttistable(t)) {  /* `t' is a table? */
(gdb) 
115           Table *h = hvalue(t);
(gdb) 
116           const TValue *res = luaH_get(h, key); /* do a primitive get */
(gdb) 
luaH_get (t=0x5c22858, key=0x22eee0) at ltable.c:469
469     const TValue *luaH_get (Table *t, const TValue *key) {
(gdb) 
470       switch (ttype(key)) {
(gdb) 
472         case LUA_TSTRING: return luaH_getstr(t, rawtsvalue(key));
(gdb) 
luaH_getstr (t=0x5c22858, key=0x22eee0) at ltable.c:455
455     const TValue *luaH_getstr (Table *t, TString *key) {
(gdb) 
456       Node *n = hashstr(t, key);
(gdb) 
455     const TValue *luaH_getstr (Table *t, TString *key) {
(gdb) 
456       Node *n = hashstr(t, key);
(gdb) 
458         if (ttisstring(gkey(n)) && rawtsvalue(gkey(n)) == key)
(gdb) 
463     }
(gdb) 
luaH_get (t=0x5c22858, key=0x22eee0) at ltable.c:491
491     }
(gdb) 
luaV_gettable (L=0x5d03c48, t=0x5d03d20, key=0x22eee0, val=0x5ceb240)
    at lvm.c:117
117           if (!ttisnil(res) ||  /* result is no nil? */
(gdb) 
119             setobj2s(L, val, res);
(gdb) 
133     }
(gdb) 
lua_getfield (L=0x5d03c48, idx=-10000, k=0x86cb11 "_ENIGMAOBJECT")
    at lapi.c:545
545       api_incr_top(L);
(gdb) 
546       lua_unlock(L);
(gdb) 
pushobject(lua_State*, world::Object*) (L=0x5d03c48, obj=0x5d13b90)
    at lua.cc:160
160             lua_setmetatable(L, -2);
Current language:  auto; currently c++
(gdb) 
lua_setmetatable (L=0x5d03c48, objindex=-2) at lapi.c:695
695       obj = index2adr(L, objindex);
Current language:  auto; currently c
(gdb) 
690     LUA_API int lua_setmetatable (lua_State *L, int objindex) {
(gdb) 
698         mt = NULL;
(gdb) 
695       obj = index2adr(L, objindex);
(gdb) 
index2adr (L=0x5, idx=-2) at lapi.c:49
49      static TValue *index2adr (lua_State *L, int idx) {
(gdb) 
50        if (idx > 0) {
(gdb) 
49      static TValue *index2adr (lua_State *L, int idx) {
(gdb) 
50        if (idx > 0) {
(gdb) 
56        else if (idx > LUA_REGISTRYINDEX) {
(gdb) 
58          return L->top + idx;
(gdb) 
76      }
(gdb) 
index2adr (L=0x5d03c48, idx=-32) at lapi.c:58
58          return L->top + idx;
(gdb) 
76      }
(gdb) 
lua_setmetatable (L=0x5d03c48, objindex=-2) at lapi.c:697
697       if (ttisnil(L->top - 1))
(gdb) 
695       obj = index2adr(L, objindex);
(gdb) 
697       if (ttisnil(L->top - 1))
(gdb) 
701         mt = hvalue(L->top - 1);
(gdb) 
703       switch (ttype(obj)) {
(gdb) 
711           uvalue(obj)->metatable = mt;
(gdb) 
712           if (mt)
(gdb) 
711           uvalue(obj)->metatable = mt;
(gdb) 
712           if (mt)
(gdb) 
713             luaC_objbarrier(L, rawuvalue(obj), mt);
(gdb) 
721       L->top--;
(gdb) 
724     }
(gdb) 
pushobject(lua_State*, world::Object*) (L=0x5d03c48, obj=0x5d13b90)
    at lua.cc:162
162     }
Current language:  auto; currently c++
(gdb) 
lua::CallFunc(lua_State*, char const*, enigma::Value const&, world::Object*) (
    L=0x5d03c48, funcname=0x5d13e34 "test", address@hidden, obj=0x5d13b90)
    at lua.cc:667
667         retval=lua_pcall(L,2,0,0);
(gdb) 
lua_pcall (L=0x5d03c48, nargs=2, nresults=0, errfunc=0) at lapi.c:805
805       if (errfunc == 0)
Current language:  auto; currently c
(gdb) 
798     LUA_API int lua_pcall (lua_State *L, int nargs, int nresults, int 
errfunc) {
(gdb) 
805       if (errfunc == 0)
(gdb) 
806         func = 0;
(gdb) 
813       c.nresults = nresults;
(gdb) 
812       c.func = L->top - (nargs+1);  /* function to be called */
(gdb) 
814       status = luaD_pcall(L, f_call, &c, savestack(L, c.func), func);
(gdb) 
luaD_pcall (L=0x5d03c48, func=0x5076e0 <f_call>, u=0x22ef10, old_top=32, ef=0)
    at ldo.c:455
455       unsigned short oldnCcalls = L->nCcalls;
(gdb) 
456       ptrdiff_t old_ci = saveci(L, L->ci);
(gdb) 
457       lu_byte old_allowhooks = L->allowhook;
(gdb) 
458       ptrdiff_t old_errfunc = L->errfunc;
(gdb) 
459       L->errfunc = ef;
(gdb) 
460       status = luaD_rawrunprotected(L, func, u);
(gdb) 
luaD_rawrunprotected (L=0x5d03c48, f=0x5076e0 <f_call>, ud=0x22ef10)
    at ldo.c:113
113       lj.status = 0;
(gdb) 
114       lj.previous = L->errorJmp;  /* chain new error handler */
(gdb) 
115       L->errorJmp = &lj;
(gdb) 
116       LUAI_TRY(L, &lj,
(gdb) 
f_call (L=0x5d03c48, ud=0x22ef10) at lapi.c:791
791     static void f_call (lua_State *L, void *ud) {
(gdb) 
793       luaD_call(L, c->func, c->nresults);
(gdb) 
luaD_call (L=0x5d03c48, func=0x5ceb210, nResults=0) at ldo.c:369
369     void luaD_call (lua_State *L, StkId func, int nResults) {
(gdb) 
370       if (++L->nCcalls >= LUAI_MAXCCALLS) {
(gdb) 
376       if (luaD_precall(L, func, nResults) == PCRLUA)  /* is a Lua function? 
*/
(gdb) 
luaD_precall (L=0x5d03c48, func=0x5ceb210, nresults=0) at ldo.c:264
264     int luaD_precall (lua_State *L, StkId func, int nresults) {
(gdb) 
267       if (!ttisfunction(func)) /* `func' is not a function? */
(gdb) 
269       funcr = savestack(L, func);
(gdb) 
270       cl = &clvalue(func)->l;
(gdb) 
271       L->ci->savedpc = L->savedpc;
(gdb) 
272       if (!cl->isC) {  /* Lua function? prepare its call */
(gdb) 
275         Proto *p = cl->p;
(gdb) 
276         luaD_checkstack(L, p->maxstacksize);
(gdb) 
275         Proto *p = cl->p;
(gdb) 
276         luaD_checkstack(L, p->maxstacksize);
(gdb) 
278         if (!p->is_vararg) {  /* no varargs? */
(gdb) 
277         func = restorestack(L, funcr);
(gdb) 
278         if (!p->is_vararg) {  /* no varargs? */
(gdb) 
277         func = restorestack(L, funcr);
(gdb) 
278         if (!p->is_vararg) {  /* no varargs? */
(gdb) 
280           if (L->top > base + p->numparams)
(gdb) 
279           base = func + 1;
(gdb) 
280           if (L->top > base + p->numparams)
(gdb) 
288         ci = inc_ci(L);  /* now `enter' new function */
(gdb) 
289         ci->func = func;
(gdb) 
290         L->base = ci->base = base;
(gdb) 
291         ci->top = L->base + p->maxstacksize;
(gdb) 
290         L->base = ci->base = base;
(gdb) 
295         ci->nresults = nresults;
(gdb) 
291         ci->top = L->base + p->maxstacksize;
(gdb) 
294         ci->tailcalls = 0;
(gdb) 
295         ci->nresults = nresults;
(gdb) 
291         ci->top = L->base + p->maxstacksize;
(gdb) 
293         L->savedpc = p->code;  /* starting point */
(gdb) 
296         for (st = L->top; st < ci->top; st++)
(gdb) 
297           setnilvalue(st);
(gdb) 
296         for (st = L->top; st < ci->top; st++)
(gdb) 
297           setnilvalue(st);
(gdb) 
296         for (st = L->top; st < ci->top; st++)
(gdb) 
297           setnilvalue(st);
(gdb) 
296         for (st = L->top; st < ci->top; st++)
(gdb) 
298         L->top = ci->top;
(gdb) 
299         if (L->hookmask & LUA_MASKCALL) {
(gdb) 
298         L->top = ci->top;
(gdb) 
299         if (L->hookmask & LUA_MASKCALL) {
(gdb) 
304         return PCRLUA;
(gdb) 
328     }
(gdb) 
luaD_call (L=0x5d03c48, func=0x5ceb210, nResults=0) at ldo.c:377
377         luaV_execute(L, 1);  /* call it */
(gdb) 
luaV_execute (L=0x5d03c48, nexeccalls=1) at lvm.c:379
379       pc = L->savedpc;
(gdb) 
380       cl = &clvalue(L->ci->func)->l;
(gdb) 
379       pc = L->savedpc;
(gdb) 
380       cl = &clvalue(L->ci->func)->l;
(gdb) 
382       k = cl->p->k;
(gdb) 
381       base = L->base;
(gdb) 
382       k = cl->p->k;
(gdb) 
385         const Instruction i = *pc++;
(gdb) 
387         if ((L->hookmask & (LUA_MASKLINE | LUA_MASKCOUNT)) &&
(gdb) 
385         const Instruction i = *pc++;
(gdb) 
387         if ((L->hookmask & (LUA_MASKLINE | LUA_MASKCOUNT)) &&
(gdb) 
397         ra = RA(i);
(gdb) 
401         switch (GET_OPCODE(i)) {
(gdb) 
430             sethvalue(L, &g, cl->env);
(gdb) 
429             TValue *rb = KBx(i);
(gdb) 
430             sethvalue(L, &g, cl->env);
(gdb) 
429             TValue *rb = KBx(i);
(gdb) 
430             sethvalue(L, &g, cl->env);
(gdb) 
429             TValue *rb = KBx(i);
(gdb) 
430             sethvalue(L, &g, cl->env);
(gdb) 
432             Protect(luaV_gettable(L, &g, rb, ra));
(gdb) 
430             sethvalue(L, &g, cl->env);
(gdb) 
432             Protect(luaV_gettable(L, &g, rb, ra));
(gdb) 
luaV_gettable (L=0x78001532, t=0x22ede0, key=0x5988f98, val=0x5988f98)
    at lvm.c:112
112       for (loop = 0; loop < MAXTAGLOOP; loop++) {
(gdb) 
110     void luaV_gettable (lua_State *L, const TValue *t, TValue *key, StkId 
val) {
(gdb) 
114         if (ttistable(t)) {  /* `t' is a table? */
(gdb) 
115           Table *h = hvalue(t);
(gdb) 
116           const TValue *res = luaH_get(h, key); /* do a primitive get */
(gdb) 
luaH_get (t=0x5c227e8, key=0x5cfd3a8) at ltable.c:469
469     const TValue *luaH_get (Table *t, const TValue *key) {
(gdb) 
470       switch (ttype(key)) {
(gdb) 
472         case LUA_TSTRING: return luaH_getstr(t, rawtsvalue(key));
(gdb) 
luaH_getstr (t=0x5c227e8, key=0x5cfd3a8) at ltable.c:455
455     const TValue *luaH_getstr (Table *t, TString *key) {
(gdb) 
456       Node *n = hashstr(t, key);
(gdb) 
455     const TValue *luaH_getstr (Table *t, TString *key) {
(gdb) 
456       Node *n = hashstr(t, key);
(gdb) 
458         if (ttisstring(gkey(n)) && rawtsvalue(gkey(n)) == key)
(gdb) 
463     }
(gdb) 
luaH_get (t=0x5c227e8, key=0x5cfd3a8) at ltable.c:491
491     }
(gdb) 
luaV_gettable (L=0x5d03c48, t=0x22ede0, key=0x5cfd3a8, val=0x5ceb240)
    at lvm.c:117
117           if (!ttisnil(res) ||  /* result is no nil? */
(gdb) 
119             setobj2s(L, val, res);
(gdb) 
133     }
(gdb) 
luaV_execute (L=0x5d03c48, nexeccalls=1) at lvm.c:735
735             Protect(luaC_checkGC(L));
(gdb) 
385         const Instruction i = *pc++;
(gdb) 
387         if ((L->hookmask & (LUA_MASKLINE | LUA_MASKCOUNT)) &&
(gdb) 
385         const Instruction i = *pc++;
(gdb) 
387         if ((L->hookmask & (LUA_MASKLINE | LUA_MASKCOUNT)) &&
(gdb) 
397         ra = RA(i);
(gdb) 
401         switch (GET_OPCODE(i)) {
(gdb) 
436             Protect(luaV_gettable(L, RB(i), RKC(i), ra));
(gdb) 
luaV_gettable (L=0x5d03c48, t=0x5ceb240, key=0x5cfd3a8, val=0x5ceb240)
    at lvm.c:112
112       for (loop = 0; loop < MAXTAGLOOP; loop++) {
(gdb) 
110     void luaV_gettable (lua_State *L, const TValue *t, TValue *key, StkId 
val) {
(gdb) 
114         if (ttistable(t)) {  /* `t' is a table? */
(gdb) 
115           Table *h = hvalue(t);
(gdb) 
116           const TValue *res = luaH_get(h, key); /* do a primitive get */
(gdb) 
luaH_get (t=0x5c442d8, key=0x5cfd3b8) at ltable.c:469
469     const TValue *luaH_get (Table *t, const TValue *key) {
(gdb) 
470       switch (ttype(key)) {
(gdb) 
472         case LUA_TSTRING: return luaH_getstr(t, rawtsvalue(key));
(gdb) 
luaH_getstr (t=0x5c442d8, key=0x5cfd3b8) at ltable.c:455
455     const TValue *luaH_getstr (Table *t, TString *key) {
(gdb) 
456       Node *n = hashstr(t, key);
(gdb) 
455     const TValue *luaH_getstr (Table *t, TString *key) {
(gdb) 
456       Node *n = hashstr(t, key);
(gdb) 
458         if (ttisstring(gkey(n)) && rawtsvalue(gkey(n)) == key)
(gdb) 
463     }
(gdb) 
luaH_get (t=0x5c442d8, key=0x5cfd3b8) at ltable.c:491
491     }
(gdb) 
luaV_gettable (L=0x5d03c48, t=0x5ceb240, key=0x5cfd3b8, val=0x5ceb240)
    at lvm.c:117
117           if (!ttisnil(res) ||  /* result is no nil? */
(gdb) 
119             setobj2s(L, val, res);
(gdb) 
133     }
(gdb) 
luaV_execute (L=0x5d03c48, nexeccalls=1) at lvm.c:551
551             Protect(
(gdb) 
385         const Instruction i = *pc++;
(gdb) 
387         if ((L->hookmask & (LUA_MASKLINE | LUA_MASKCOUNT)) &&
(gdb) 
385         const Instruction i = *pc++;
(gdb) 
387         if ((L->hookmask & (LUA_MASKLINE | LUA_MASKCOUNT)) &&
(gdb) 
397         ra = RA(i);
(gdb) 
401         switch (GET_OPCODE(i)) {
(gdb) 
403             setobjs2s(L, ra, RB(i));
(gdb) 
424             setobj2s(L, ra, cl->upvals[b]->v);
(gdb) 
385         const Instruction i = *pc++;
(gdb) 
387         if ((L->hookmask & (LUA_MASKLINE | LUA_MASKCOUNT)) &&
(gdb) 
385         const Instruction i = *pc++;
(gdb) 
387         if ((L->hookmask & (LUA_MASKLINE | LUA_MASKCOUNT)) &&
(gdb) 
397         ra = RA(i);
(gdb) 
401         switch (GET_OPCODE(i)) {
(gdb) 
407             setobj2s(L, ra, KBx(i));
(gdb) 
424             setobj2s(L, ra, cl->upvals[b]->v);
(gdb) 
385         const Instruction i = *pc++;
(gdb) 
387         if ((L->hookmask & (LUA_MASKLINE | LUA_MASKCOUNT)) &&
(gdb) 
385         const Instruction i = *pc++;
(gdb) 
387         if ((L->hookmask & (LUA_MASKLINE | LUA_MASKCOUNT)) &&
(gdb) 
397         ra = RA(i);
(gdb) 
401         switch (GET_OPCODE(i)) {
(gdb) 
583             int nresults = GETARG_C(i) - 1;
(gdb) 
584             if (b != 0) L->top = ra+b;  /* else previous instruction set 
top */
(gdb) 
585             L->savedpc = pc;
(gdb) 
586             switch (luaD_precall(L, ra, nresults)) {
(gdb) 
luaD_precall (L=0x5d03c48, func=0x5ceb240, nresults=0) at ldo.c:264
264     int luaD_precall (lua_State *L, StkId func, int nresults) {
(gdb) 
267       if (!ttisfunction(func)) /* `func' is not a function? */
(gdb) 
269       funcr = savestack(L, func);
(gdb) 
270       cl = &clvalue(func)->l;
(gdb) 
271       L->ci->savedpc = L->savedpc;
(gdb) 
272       if (!cl->isC) {  /* Lua function? prepare its call */
(gdb) 
309         luaD_checkstack(L, LUA_MINSTACK);  /* ensure minimum stack size */
(gdb) 
310         ci = inc_ci(L);  /* now `enter' new function */
(gdb) 
311         ci->func = restorestack(L, funcr);
(gdb) 
310         ci = inc_ci(L);  /* now `enter' new function */
(gdb) 
311         ci->func = restorestack(L, funcr);
(gdb) 
315         ci->nresults = nresults;
(gdb) 
311         ci->func = restorestack(L, funcr);
(gdb) 
315         ci->nresults = nresults;
(gdb) 
311         ci->func = restorestack(L, funcr);
(gdb) 
312         L->base = ci->base = ci->func + 1;
(gdb) 
313         ci->top = L->top + LUA_MINSTACK;
(gdb) 
316         if (L->hookmask & LUA_MASKCALL)
(gdb) 
319         n = (*curr_func(L)->c.f)(L);  /* do the actual call */
(gdb) 
en_get_attrib(lua_State*) (L=0x5d03c48) at lua.cc:201
201         Object *obj = to_object(L,1);
Current language:  auto; currently c++
(gdb) 
to_object(lua_State*, int) (L=0x5d03c48, idx=1) at lua.cc:137
137         if (lua_isnil(L,idx))
(gdb) 
lua_type (L=0x5d03c48, idx=1) at lapi.c:235
235     LUA_API int lua_type (lua_State *L, int idx) {
Current language:  auto; currently c
(gdb) 
236       StkId o = index2adr(L, idx);
(gdb) 
index2adr (L=0x5d03c48, idx=1) at lapi.c:49
49      static TValue *index2adr (lua_State *L, int idx) {
(gdb) 
50        if (idx > 0) {
(gdb) 
49      static TValue *index2adr (lua_State *L, int idx) {
(gdb) 
50        if (idx > 0) {
(gdb) 
51          TValue *o = L->base + (idx - 1);
(gdb) 
53          if (o >= L->top) return cast(TValue *, luaO_nilobject);
(gdb) 
54          else return o;
(gdb) 
76      }
(gdb) 
lua_type (L=0x5d03c48, idx=1) at lapi.c:237
237       return (o == luaO_nilobject) ? LUA_TNONE : ttype(o);
(gdb) 
238     }
(gdb) 
to_object(lua_State*, int) (L=0x5d03c48, idx=1) at lua.cc:140
140         if (!is_object(L,idx)) {
Current language:  auto; currently c++
(gdb) 
is_object(lua_State*, int) (L=0x5d03c48, idx=1) at lua.cc:131
131         return lua_isuserdata(L,idx) && 
luaL_checkudata(L,idx,"_ENIGMAOBJECT");
(gdb) 
lua_isuserdata (L=0x5d03c48, idx=1) at lapi.c:266
266     LUA_API int lua_isuserdata (lua_State *L, int idx) {
Current language:  auto; currently c
(gdb) 
267       const TValue *o = index2adr(L, idx);
(gdb) 
index2adr (L=0x5d03c48, idx=1) at lapi.c:49
49      static TValue *index2adr (lua_State *L, int idx) {
(gdb) 
50        if (idx > 0) {
(gdb) 
49      static TValue *index2adr (lua_State *L, int idx) {
(gdb) 
50        if (idx > 0) {
(gdb) 
51          TValue *o = L->base + (idx - 1);
(gdb) 
53          if (o >= L->top) return cast(TValue *, luaO_nilobject);
(gdb) 
54          else return o;
(gdb) 
76      }
(gdb) 
lua_isuserdata (L=0x5d03c48, idx=1) at lapi.c:269
269     }
(gdb) 
lua_isuserdata (L=0x5d03c48, idx=1) at lapi.c:268
268       return (ttisuserdata(o) || ttislightuserdata(o));
(gdb) 
269     }
(gdb) 
luaL_checkudata (L=0x5d03c48, ud=1, tname=0x86cb11 "_ENIGMAOBJECT")
    at lauxlib.c:125
125       void *p = lua_touserdata(L, ud);
(gdb) 
lua_touserdata (L=0x5d03c48, idx=1) at lapi.c:378
378     LUA_API void *lua_touserdata (lua_State *L, int idx) {
(gdb) 
379       StkId o = index2adr(L, idx);
(gdb) 
index2adr (L=0x5d03c48, idx=1) at lapi.c:49
49      static TValue *index2adr (lua_State *L, int idx) {
(gdb) 
50        if (idx > 0) {
(gdb) 
49      static TValue *index2adr (lua_State *L, int idx) {
(gdb) 
50        if (idx > 0) {
(gdb) 
51          TValue *o = L->base + (idx - 1);
(gdb) 
53          if (o >= L->top) return cast(TValue *, luaO_nilobject);
(gdb) 
54          else return o;
(gdb) 
76      }
(gdb) 
lua_touserdata (L=0x5d03c48, idx=1) at lapi.c:380
380       switch (ttype(o)) {
(gdb) 
383         default: return NULL;
(gdb) 
380       switch (ttype(o)) {
(gdb) 
381         case LUA_TUSERDATA: return (rawuvalue(o) + 1);
(gdb) 
385     }
(gdb) 
luaL_checkudata (L=0x5d03c48, ud=1, tname=0x86cb11 "_ENIGMAOBJECT")
    at lauxlib.c:126
126       lua_getfield(L, LUA_REGISTRYINDEX, tname);  /* get correct metatable 
*/
(gdb) 
lua_getfield (L=0x5d03c48, idx=-10000, k=0x86cb11 "_ENIGMAOBJECT")
    at lapi.c:541
541       t = index2adr(L, idx);
(gdb) 
537     LUA_API void lua_getfield (lua_State *L, int idx, const char *k) {
(gdb) 
541       t = index2adr(L, idx);
(gdb) 
index2adr (L=0x5988fb0, idx=-10000) at lapi.c:49
49      static TValue *index2adr (lua_State *L, int idx) {
(gdb) 
50        if (idx > 0) {
(gdb) 
49      static TValue *index2adr (lua_State *L, int idx) {
(gdb) 
50        if (idx > 0) {
(gdb) 
56        else if (idx > LUA_REGISTRYINDEX) {
(gdb) 
60        else switch (idx) {  /* pseudo-indices */
(gdb) 
61          case LUA_REGISTRYINDEX: return registry(L);
(gdb) 
76      }
(gdb) 
index2adr (L=0x5d03c48, idx=97533120) at lapi.c:61
61          case LUA_REGISTRYINDEX: return registry(L);
(gdb) 
76      }
(gdb) 
lua_getfield (L=0x5d03c48, idx=-10000, k=0x86cb11 "_ENIGMAOBJECT")
    at lapi.c:543
543       setsvalue(L, &key, luaS_new(L, k));
(gdb) 
541       t = index2adr(L, idx);
(gdb) 
543       setsvalue(L, &key, luaS_new(L, k));
(gdb) 
luaS_newlstr (L=0x5d03c48, str=0x86cb11 "_ENIGMAOBJECT", l=13) at lstring.c:77
77        unsigned int h = cast(unsigned int, l);  /* seed */
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
78        size_t step = (l>>5)+1;  /* if string is too long, don't hash all its 
chars */
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
82        for (o = G(L)->strt.hash[lmod(h, G(L)->strt.size)];
(gdb) 
86          if (ts->tsv.len == l && (memcmp(str, getstr(ts), l) == 0)) {
(gdb) 
88            if (isdead(G(L), o)) changewhite(o);
(gdb) 
93      }
(gdb) 
51                                             unsigned int h) {
(gdb) 
93      }
(gdb) 
lua_getfield (L=0x5d03c48, idx=-10000, k=0x86cb11 "_ENIGMAOBJECT")
    at lapi.c:544
544       luaV_gettable(L, t, &key, L->top);
(gdb) 
543       setsvalue(L, &key, luaS_new(L, k));
(gdb) 
544       luaV_gettable(L, t, &key, L->top);
(gdb) 
luaV_gettable (L=0x994b7a88, t=0x5d03d20, key=0x5d03cc0, val=0x37a0000)
    at lvm.c:112
112       for (loop = 0; loop < MAXTAGLOOP; loop++) {
(gdb) 
110     void luaV_gettable (lua_State *L, const TValue *t, TValue *key, StkId 
val) {
(gdb) 
114         if (ttistable(t)) {  /* `t' is a table? */
(gdb) 
115           Table *h = hvalue(t);
(gdb) 
116           const TValue *res = luaH_get(h, key); /* do a primitive get */
(gdb) 
luaH_get (t=0x5c22858, key=0x22eba0) at ltable.c:469
469     const TValue *luaH_get (Table *t, const TValue *key) {
(gdb) 
470       switch (ttype(key)) {
(gdb) 
472         case LUA_TSTRING: return luaH_getstr(t, rawtsvalue(key));
(gdb) 
luaH_getstr (t=0x5c22858, key=0x22eba0) at ltable.c:455
455     const TValue *luaH_getstr (Table *t, TString *key) {
(gdb) 
456       Node *n = hashstr(t, key);
(gdb) 
455     const TValue *luaH_getstr (Table *t, TString *key) {
(gdb) 
456       Node *n = hashstr(t, key);
(gdb) 
458         if (ttisstring(gkey(n)) && rawtsvalue(gkey(n)) == key)
(gdb) 
463     }
(gdb) 
luaH_get (t=0x5c22858, key=0x22eba0) at ltable.c:491
491     }
(gdb) 
luaV_gettable (L=0x5d03c48, t=0x5d03d20, key=0x22eba0, val=0x5ceb270)
    at lvm.c:117
117           if (!ttisnil(res) ||  /* result is no nil? */
(gdb) 
119             setobj2s(L, val, res);
(gdb) 
133     }
(gdb) 
lua_getfield (L=0x5d03c48, idx=-10000, k=0x86cb11 "_ENIGMAOBJECT")
    at lapi.c:545
545       api_incr_top(L);
(gdb) 
546       lua_unlock(L);
(gdb) 
luaL_checkudata (L=0x5d03c48, ud=1, tname=0x86cb11 "_ENIGMAOBJECT")
    at lauxlib.c:127
127       if (p == NULL || !lua_getmetatable(L, ud) || !lua_rawequal(L, -1, -2))
(gdb) 
lua_getmetatable (L=0x5d03c48, objindex=1) at lapi.c:580
580     LUA_API int lua_getmetatable (lua_State *L, int objindex) {
(gdb) 
585       obj = index2adr(L, objindex);
(gdb) 
index2adr (L=0x5, idx=1) at lapi.c:49
49      static TValue *index2adr (lua_State *L, int idx) {
(gdb) 
50        if (idx > 0) {
(gdb) 
49      static TValue *index2adr (lua_State *L, int idx) {
(gdb) 
50        if (idx > 0) {
(gdb) 
51          TValue *o = L->base + (idx - 1);
(gdb) 
53          if (o >= L->top) return cast(TValue *, luaO_nilobject);
(gdb) 
54          else return o;
(gdb) 
76      }
(gdb) 
lua_getmetatable (L=0x5d03c48, objindex=1) at lapi.c:586
586       switch (ttype(obj)) {
(gdb) 
591           mt = uvalue(obj)->metatable;
(gdb) 
598         res = 0;
(gdb) 
597       if (mt == NULL)
(gdb) 
600         sethvalue(L, L->top, mt);
(gdb) 
601         api_incr_top(L);
(gdb) 
600         sethvalue(L, L->top, mt);
(gdb) 
602         res = 1;
(gdb) 
606     }
(gdb) 
lua_rawequal (L=0x5d03c48, index1=-1, index2=-2) at lapi.c:273
273       StkId o1 = index2adr(L, index1);
(gdb) 
index2adr (L=0xffffffff, idx=-1) at lapi.c:49
49      static TValue *index2adr (lua_State *L, int idx) {
(gdb) 
50        if (idx > 0) {
(gdb) 
49      static TValue *index2adr (lua_State *L, int idx) {
(gdb) 
50        if (idx > 0) {
(gdb) 
56        else if (idx > LUA_REGISTRYINDEX) {
(gdb) 
58          return L->top + idx;
(gdb) 
76      }
(gdb) 
index2adr (L=0x5d03c48, idx=-16) at lapi.c:58
58          return L->top + idx;
(gdb) 
76      }
(gdb) 
lua_rawequal (L=0x5d03c48, index1=-1, index2=-2) at lapi.c:274
274       StkId o2 = index2adr(L, index2);
(gdb) 
index2adr (L=0x5d03c48, idx=-2) at lapi.c:49
49      static TValue *index2adr (lua_State *L, int idx) {
(gdb) 
50        if (idx > 0) {
(gdb) 
49      static TValue *index2adr (lua_State *L, int idx) {
(gdb) 
50        if (idx > 0) {
(gdb) 
56        else if (idx > LUA_REGISTRYINDEX) {
(gdb) 
58          return L->top + idx;
(gdb) 
76      }
(gdb) 
index2adr (L=0x5d03c48, idx=-32) at lapi.c:58
58          return L->top + idx;
(gdb) 
76      }
(gdb) 
lua_rawequal (L=0x5d03c48, index1=-1, index2=-2) at lapi.c:275
275       return (o1 == luaO_nilobject || o2 == luaO_nilobject) ? 0
(gdb) 
277     }
(gdb) 
275       return (o1 == luaO_nilobject || o2 == luaO_nilobject) ? 0
(gdb) 
277     }
(gdb) 
lua_rawequal (L=0x5d03c48, index1=1, index2=8833809) at lapi.c:275
275       return (o1 == luaO_nilobject || o2 == luaO_nilobject) ? 0
(gdb) 
luaO_rawequalObj (t1=0x5d03c48, t2=0x1) at lobject.c:72
72      int luaO_rawequalObj (const TValue *t1, const TValue *t2) {
(gdb) 
73        if (ttype(t1) != ttype(t2)) return 0;
(gdb) 
72      int luaO_rawequalObj (const TValue *t1, const TValue *t2) {
(gdb) 
73        if (ttype(t1) != ttype(t2)) return 0;
(gdb) 
74        else switch (ttype(t1)) {
(gdb) 
85            return gcvalue(t1) == gcvalue(t2);
(gdb) 
87      }
(gdb) 
luaL_checkudata (L=0x5d03c48, ud=1, tname=0x86cb11 "_ENIGMAOBJECT")
    at lauxlib.c:129
129       lua_pop(L, 2);  /* remove both metatables */
(gdb) 
lua_settop (L=0x5d03c48, idx=-3) at lapi.c:160
160     LUA_API void lua_settop (lua_State *L, int idx) {
(gdb) 
162       if (idx >= 0) {
(gdb) 
170         L->top += idx+1;  /* `subtract' index (index is negative) */
(gdb) 
173     }
(gdb) 
luaL_checkudata (L=0x5d03c48, ud=1, tname=0x86cb11 "_ENIGMAOBJECT")
    at lauxlib.c:131
131     }
(gdb) 
is_object(lua_State*, int) (L=0x5d03c48, idx=1) at lua.cc:132
132     }
Current language:  auto; currently c++
(gdb) 
to_object(lua_State*, int) (L=0x5d03c48, idx=1) at lua.cc:144
144         return 
static_cast<Object*>(*(static_cast<void**>(lua_touserdata(L,idx))));
(gdb) 
lua_touserdata (L=0x5d03c48, idx=1) at lapi.c:378
378     LUA_API void *lua_touserdata (lua_State *L, int idx) {
Current language:  auto; currently c
(gdb) 
379       StkId o = index2adr(L, idx);
(gdb) 
index2adr (L=0x5ceb270, idx=1) at lapi.c:49
49      static TValue *index2adr (lua_State *L, int idx) {
(gdb) 
50        if (idx > 0) {
(gdb) 
49      static TValue *index2adr (lua_State *L, int idx) {
(gdb) 
50        if (idx > 0) {
(gdb) 
51          TValue *o = L->base + (idx - 1);
(gdb) 
53          if (o >= L->top) return cast(TValue *, luaO_nilobject);
(gdb) 
54          else return o;
(gdb) 
76      }
(gdb) 
lua_touserdata (L=0x5d03c48, idx=1) at lapi.c:380
380       switch (ttype(o)) {
(gdb) 
383         default: return NULL;
(gdb) 
380       switch (ttype(o)) {
(gdb) 
381         case LUA_TUSERDATA: return (rawuvalue(o) + 1);
(gdb) 
385     }
(gdb) 
to_object(lua_State*, int) (L=0x5d03c48, idx=1) at lua.cc:145
145     }
Current language:  auto; currently c++
(gdb) 
en_get_attrib(lua_State*) (L=0x5d03c48) at lua.cc:202
202         const char *key = lua_tostring(L,2);
(gdb) 
lua_tolstring (L=0x5d03c48, idx=2, len=0x0) at lapi.c:337
337       StkId o = index2adr(L, idx);
Current language:  auto; currently c
(gdb) 
336     LUA_API const char *lua_tolstring (lua_State *L, int idx, size_t *len) {
(gdb) 
337       StkId o = index2adr(L, idx);
(gdb) 
336     LUA_API const char *lua_tolstring (lua_State *L, int idx, size_t *len) {
(gdb) 
337       StkId o = index2adr(L, idx);
(gdb) 
index2adr (L=0x5988fb0, idx=2) at lapi.c:49
49      static TValue *index2adr (lua_State *L, int idx) {
(gdb) 
50        if (idx > 0) {
(gdb) 
49      static TValue *index2adr (lua_State *L, int idx) {
(gdb) 

50        if (idx > 0) {
(gdb) 51            TValue *o = L->base + (idx - 1);
(gdb) 
53          if (o >= L->top) return cast(TValue *, luaO_nilobject);
(gdb) 
54          else return o;
(gdb) 
76      }
(gdb) 
lua_tolstring (L=0x5d03c48, idx=2, len=0x0) at lapi.c:338
338       if (!ttisstring(o)) {
(gdb) 
337       StkId o = index2adr(L, idx);
(gdb) 
338       if (!ttisstring(o)) {
(gdb) 
349       if (len != NULL) *len = tsvalue(o)->len;
(gdb) 
350       return svalue(o);
(gdb) 
351     }
(gdb) 
en_get_attrib(lua_State*) (L=0x5d03c48) at lua.cc:204
204         if (!obj) {
Current language:  auto; currently c++
(gdb) 
208         if (!key) {
(gdb) 
213         if (0 == strcmp(key, "kind")) {
(gdb) 
218         const Value *v =  obj->get_attrib(key);
(gdb) 
world::Object::get_attrib(std::string const&) const (this=0x5d13b90, 
    address@hidden) at objects.cc:124
124         AttribMap::const_iterator i = attribs.find(key);
(gdb) 
ecl::AssocList<std::string, enigma::Value>::find(std::string const&) const (
    this=0x5d13b94, address@hidden) at ../lib-src/enigma-core/ecl_alist.hh:54
54                  const_iterator i=this->begin(), e=this->end();
(gdb) 
std::list<std::pair<std::string, enigma::Value>, 
std::allocator<std::pair<std::string, enigma::Value> > >::begin() const 
(this=0x5d13b94)
    at 
D:/MinGW/bin/../lib/gcc/mingw32/3.4.2/../../../../include/c++/3.4.2/bits/stl_list.h:607
607           { return this->_M_impl._M_node._M_next; }
(gdb) 
std::_List_const_iterator<std::pair<std::string, enigma::Value> 
>::_List_const_iterator(std::_List_node_base const*) (this=0x22ebe4, 
__x=0x5d13bc8)
    at 
D:/MinGW/bin/../lib/gcc/mingw32/3.4.2/../../../../include/c++/3.4.2/bits/stl_list.h:201
201           : _M_node(__x) { }
(gdb) 
0x007bc836 in std::list<std::pair<std::string, enigma::Value>, 
std::allocator<std::pair<std::string, enigma::Value> > >::begin() const 
(this=0x5d13b94)
    at 
D:/MinGW/bin/../lib/gcc/mingw32/3.4.2/../../../../include/c++/3.4.2/bits/stl_list.h:607
607           { return this->_M_impl._M_node._M_next; }
(gdb) 
std::list<std::pair<std::string, enigma::Value>, 
std::allocator<std::pair<std::string, enigma::Value> > >::end() const 
(this=0x5d13b94)
    at 
D:/MinGW/bin/../lib/gcc/mingw32/3.4.2/../../../../include/c++/3.4.2/bits/stl_list.h:624
624           { return &this->_M_impl._M_node; }
(gdb) 
std::_List_const_iterator<std::pair<std::string, enigma::Value> 
>::_List_const_iterator(std::_List_node_base const*) (this=0x22ebe4, 
__x=0x5d13b94)
    at 
D:/MinGW/bin/../lib/gcc/mingw32/3.4.2/../../../../include/c++/3.4.2/bits/stl_list.h:201
201           : _M_node(__x) { }
(gdb) 
0x007bc814 in std::list<std::pair<std::string, enigma::Value>, 
std::allocator<std::pair<std::string, enigma::Value> > >::end() const 
(this=0x5d13b94)
    at 
D:/MinGW/bin/../lib/gcc/mingw32/3.4.2/../../../../include/c++/3.4.2/bits/stl_list.h:624
624           { return &this->_M_impl._M_node; }
(gdb) 
ecl::AssocList<std::string, enigma::Value>::find(std::string const&) const (
    this=0x5d13b94, address@hidden) at ../lib-src/enigma-core/ecl_alist.hh:55
55                  for (; i!=e; ++i) 
(gdb) 
std::_List_const_iterator<std::pair<std::string, enigma::Value> 
>::operator!=(std::_List_const_iterator<std::pair<std::string, enigma::Value> > 
const&) const (
    this=0x22ec04, address@hidden)
    at 
D:/MinGW/bin/../lib/gcc/mingw32/3.4.2/../../../../include/c++/3.4.2/bits/stl_list.h:252
252           { return _M_node != __x._M_node; }
(gdb) 
ecl::AssocList<std::string, enigma::Value>::find(std::string const&) const (
    this=0x5d13b94, address@hidden) at ../lib-src/enigma-core/ecl_alist.hh:56
56                      if (i->first == key)
(gdb) 
std::_List_const_iterator<std::pair<std::string, enigma::Value> >::operator->() 
const (this=0x22ec04)
    at 
D:/MinGW/bin/../lib/gcc/mingw32/3.4.2/../../../../include/c++/3.4.2/bits/stl_list.h:214
214           { return &static_cast<_Node*>(_M_node)->_M_data; }
(gdb) 
bool std::operator==<char, std::char_traits<char>, std::allocator<char> 
>(std::basic_string<char, std::char_traits<char>, std::allocator<char> > 
const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > 
const&) (
    address@hidden, address@hidden)
    at 
D:/MinGW/bin/../lib/gcc/mingw32/3.4.2/../../../../include/c++/3.4.2/bits/basic_string.h:2054
2054        { return __lhs.compare(__rhs) == 0; }
(gdb) 
ecl::AssocList<std::string, enigma::Value>::find(std::string const&) const (
    this=0x5d13b94, address@hidden) at ../lib-src/enigma-core/ecl_alist.hh:55
55                  for (; i!=e; ++i) 
(gdb) 
std::_List_const_iterator<std::pair<std::string, enigma::Value> >::operator++()
    (this=0x22ec04)
    at 
D:/MinGW/bin/../lib/gcc/mingw32/3.4.2/../../../../include/c++/3.4.2/bits/stl_list.h:219
219             _M_node = _M_node->_M_next;
(gdb) 
220             return *this;
(gdb) 
std::_List_const_iterator<std::pair<std::string, enigma::Value> 
>::operator!=(std::_List_const_iterator<std::pair<std::string, enigma::Value> > 
const&) const (
    this=0x22ec04, address@hidden)
    at 
D:/MinGW/bin/../lib/gcc/mingw32/3.4.2/../../../../include/c++/3.4.2/bits/stl_list.h:252
252           { return _M_node != __x._M_node; }
(gdb) 
ecl::AssocList<std::string, enigma::Value>::find(std::string const&) const (
    this=0x5d13b94, address@hidden) at ../lib-src/enigma-core/ecl_alist.hh:56
56                      if (i->first == key)
(gdb) 
std::_List_const_iterator<std::pair<std::string, enigma::Value> >::operator->() 
const (this=0x22ec04)
    at 
D:/MinGW/bin/../lib/gcc/mingw32/3.4.2/../../../../include/c++/3.4.2/bits/stl_list.h:214
214           { return &static_cast<_Node*>(_M_node)->_M_data; }
(gdb) 
bool std::operator==<char, std::char_traits<char>, std::allocator<char> 
>(std::basic_string<char, std::char_traits<char>, std::allocator<char> > 
const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > 
const&) (
    address@hidden, address@hidden)
    at 
D:/MinGW/bin/../lib/gcc/mingw32/3.4.2/../../../../include/c++/3.4.2/bits/basic_string.h:2054
2054        { return __lhs.compare(__rhs) == 0; }
(gdb) 
ecl::AssocList<std::string, enigma::Value>::find(std::string const&) const (
    this=0x5d13b94, address@hidden) at ../lib-src/enigma-core/ecl_alist.hh:55
55                  for (; i!=e; ++i) 
(gdb) 
std::_List_const_iterator<std::pair<std::string, enigma::Value> >::operator++()
    (this=0x22ec04)
    at 
D:/MinGW/bin/../lib/gcc/mingw32/3.4.2/../../../../include/c++/3.4.2/bits/stl_list.h:219
219             _M_node = _M_node->_M_next;
(gdb) 
220             return *this;
(gdb) 
std::_List_const_iterator<std::pair<std::string, enigma::Value> 
>::operator!=(std::_List_const_iterator<std::pair<std::string, enigma::Value> > 
const&) const (
    this=0x22ec04, address@hidden)
    at 
D:/MinGW/bin/../lib/gcc/mingw32/3.4.2/../../../../include/c++/3.4.2/bits/stl_list.h:252
252           { return _M_node != __x._M_node; }
(gdb) 
ecl::AssocList<std::string, enigma::Value>::find(std::string const&) const (
    this=0x5d13b94, address@hidden) at ../lib-src/enigma-core/ecl_alist.hh:56
56                      if (i->first == key)
(gdb) 
std::_List_const_iterator<std::pair<std::string, enigma::Value> >::operator->() 
const (this=0x22ec04)
    at 
D:/MinGW/bin/../lib/gcc/mingw32/3.4.2/../../../../include/c++/3.4.2/bits/stl_list.h:214
214           { return &static_cast<_Node*>(_M_node)->_M_data; }
(gdb) 
bool std::operator==<char, std::char_traits<char>, std::allocator<char> 
>(std::basic_string<char, std::char_traits<char>, std::allocator<char> > 
const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > 
const&) (
    address@hidden, address@hidden)
    at 
D:/MinGW/bin/../lib/gcc/mingw32/3.4.2/../../../../include/c++/3.4.2/bits/basic_string.h:2054
2054        { return __lhs.compare(__rhs) == 0; }
(gdb) 
ecl::AssocList<std::string, enigma::Value>::find(std::string const&) const (
    this=0x5d13b94, address@hidden) at ../lib-src/enigma-core/ecl_alist.hh:55
55                  for (; i!=e; ++i) 
(gdb) 
std::_List_const_iterator<std::pair<std::string, enigma::Value> >::operator++()
    (this=0x22ec04)
    at 
D:/MinGW/bin/../lib/gcc/mingw32/3.4.2/../../../../include/c++/3.4.2/bits/stl_list.h:219
219             _M_node = _M_node->_M_next;
(gdb) 
220             return *this;
(gdb) 
std::_List_const_iterator<std::pair<std::string, enigma::Value> 
>::operator!=(std::_List_const_iterator<std::pair<std::string, enigma::Value> > 
const&) const (
    this=0x22ec04, address@hidden)
    at 
D:/MinGW/bin/../lib/gcc/mingw32/3.4.2/../../../../include/c++/3.4.2/bits/stl_list.h:252
252           { return _M_node != __x._M_node; }
(gdb) 
ecl::AssocList<std::string, enigma::Value>::find(std::string const&) const (
    this=0x5d13b94, address@hidden) at ../lib-src/enigma-core/ecl_alist.hh:56
56                      if (i->first == key)
(gdb) 
std::_List_const_iterator<std::pair<std::string, enigma::Value> >::operator->() 
const (this=0x22ec04)
    at 
D:/MinGW/bin/../lib/gcc/mingw32/3.4.2/../../../../include/c++/3.4.2/bits/stl_list.h:214
214           { return &static_cast<_Node*>(_M_node)->_M_data; }
(gdb) 
bool std::operator==<char, std::char_traits<char>, std::allocator<char> 
>(std::basic_string<char, std::char_traits<char>, std::allocator<char> > 
const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > 
const&) (
    address@hidden, address@hidden)
    at 
D:/MinGW/bin/../lib/gcc/mingw32/3.4.2/../../../../include/c++/3.4.2/bits/basic_string.h:2054
2054        { return __lhs.compare(__rhs) == 0; }
(gdb) 
ecl::AssocList<std::string, enigma::Value>::find(std::string const&) const (
    this=0x5d13b94, address@hidden) at ../lib-src/enigma-core/ecl_alist.hh:55
55                  for (; i!=e; ++i) 
(gdb) 
std::_List_const_iterator<std::pair<std::string, enigma::Value> >::operator++()
    (this=0x22ec04)
    at 
D:/MinGW/bin/../lib/gcc/mingw32/3.4.2/../../../../include/c++/3.4.2/bits/stl_list.h:219
219             _M_node = _M_node->_M_next;
(gdb) 
220             return *this;
(gdb) 
std::_List_const_iterator<std::pair<std::string, enigma::Value> 
>::operator!=(std::_List_const_iterator<std::pair<std::string, enigma::Value> > 
const&) const (
    this=0x22ec04, address@hidden)
    at 
D:/MinGW/bin/../lib/gcc/mingw32/3.4.2/../../../../include/c++/3.4.2/bits/stl_list.h:252
252           { return _M_node != __x._M_node; }
(gdb) 
ecl::AssocList<std::string, enigma::Value>::find(std::string const&) const (
    this=0x5d13b94, address@hidden) at ../lib-src/enigma-core/ecl_alist.hh:58
58                  return i;
(gdb) 
world::Object::get_attrib(std::string const&) const (this=0x5d13b90, 
    address@hidden) at objects.cc:125
125         if (i == attribs.end())
(gdb) 
std::list<std::pair<std::string, enigma::Value>, 
std::allocator<std::pair<std::string, enigma::Value> > >::end() const 
(this=0x5d13b94)
    at 
D:/MinGW/bin/../lib/gcc/mingw32/3.4.2/../../../../include/c++/3.4.2/bits/stl_list.h:624
624           { return &this->_M_impl._M_node; }
(gdb) 
std::_List_const_iterator<std::pair<std::string, enigma::Value> 
>::_List_const_iterator(std::_List_node_base const*) (this=0x22ec04, 
__x=0x5d13b94)
    at 
D:/MinGW/bin/../lib/gcc/mingw32/3.4.2/../../../../include/c++/3.4.2/bits/stl_list.h:201
201           : _M_node(__x) { }
(gdb) 
0x007bc814 in std::list<std::pair<std::string, enigma::Value>, 
std::allocator<std::pair<std::string, enigma::Value> > >::end() const 
(this=0x5d13b94)
    at 
D:/MinGW/bin/../lib/gcc/mingw32/3.4.2/../../../../include/c++/3.4.2/bits/stl_list.h:624
624           { return &this->_M_impl._M_node; }
(gdb) 
std::_List_const_iterator<std::pair<std::string, enigma::Value> 
>::operator==(std::_List_const_iterator<std::pair<std::string, enigma::Value> > 
const&) const (
    this=0x22ec24, address@hidden)
    at 
D:/MinGW/bin/../lib/gcc/mingw32/3.4.2/../../../../include/c++/3.4.2/bits/stl_list.h:248
248           { return _M_node == __x._M_node; }
(gdb) 
world::Object::get_attrib(std::string const&) const (this=0x5d13b90, 
    address@hidden) at objects.cc:126
126             return 0;
(gdb) 
129     }
(gdb) 
en_get_attrib(lua_State*) (L=0x5d03c48) at lua.cc:219
219         if (!v) {
(gdb) 
220             luaL_error(L, strf("GetAttrib: unknown attribute '%s'", 
key).c_str());
(gdb) 
ecl::strf(char const*, ...) (
    format=0x86cc00 "GetAttrib: unknown attribute '%s'") at ecl_util.cc:85
85          va_start(argPtr, format);
(gdb) 
86          string result = vstrf(format, argPtr);
(gdb) 
(anonymous namespace)::vstrf(char const*, char*) (
    format=0x86cc00 "GetAttrib: unknown attribute '%s'", 
    argPtr=0x22ec38 "\020ÒÏ\005hê\"") at ecl_util.cc:59
59              static char   *buffer   = new char[buf_size];
(gdb) 
63                  if (!buffer) {
(gdb) 
68                  length = vsnprintf(buffer, buf_size, format, argPtr);
(gdb) 
vsnprintf (s=0x3861b98 "Ihre Zeit: 2:59", n=128, 
    format=0x86cc00 "GetAttrib: unknown attribute '%s'", 
    arg=0x22ec38 "\020ÒÏ\005hê\"")
    at D:/MinGW/bin/../lib/gcc/mingw32/3.4.2/../../../../include/stdio.h:219
219       { return _vsnprintf ( s, n, format, arg); }
(gdb) 
(anonymous namespace)::vstrf(char const*, char*) (
    format=0x86cc00 "GetAttrib: unknown attribute '%s'", 
    argPtr=0x22ec38 "\020ÒÏ\005hê\"") at ecl_util.cc:69
69                  if (length < buf_size) break; // string fits into current 
buffer
(gdb) 
78              return string(buffer, length);
(gdb) 
79          }
(gdb) 
ecl::strf(char const*, ...) (
    format=0x86cc00 "GetAttrib: unknown attribute '%s'") at ecl_util.cc:90
90      }
(gdb) 
luaL_error (L=0x5d03c48, fmt=0x5c44b58 "") at lauxlib.c:86
86      LUALIB_API int luaL_error (lua_State *L, const char *fmt, ...) {
Current language:  auto; currently c
(gdb) 
89        luaL_where(L, 1);
(gdb) 
86      LUALIB_API int luaL_error (lua_State *L, const char *fmt, ...) {
(gdb) 
luaL_error (L=0x5d03c48, 
    fmt=0x5be455c "GetAttrib: unknown attribute 'notexisting'") at lauxlib.c:88
88        va_start(argp, fmt);
(gdb) 
89        luaL_where(L, 1);
(gdb) 
luaL_where (L=0x5d03c48, level=1) at lauxlib.c:75
75        if (lua_getstack(L, level, &ar)) {  /* check function at level */
(gdb) 
73      LUALIB_API void luaL_where (lua_State *L, int level) {
(gdb) 
75        if (lua_getstack(L, level, &ar)) {  /* check function at level */
(gdb) 
lua_getstack (L=0x5d03c48, level=1, ar=0x22eb90) at ldebug.c:84
84      LUA_API int lua_getstack (lua_State *L, int level, lua_Debug *ar) {
(gdb) 
88        for (ci = L->ci; level > 0 && ci > L->base_ci; ci--) {
(gdb) 
90          if (f_isLua(ci))  /* Lua function? */
(gdb) 
89          level--;
(gdb) 
90          if (f_isLua(ci))  /* Lua function? */
(gdb) 
88        for (ci = L->ci; level > 0 && ci > L->base_ci; ci--) {
(gdb) 
93        if (level == 0 && ci > L->base_ci) {  /* level found? */
(gdb) 
95          ar->i_ci = cast_int(ci - L->base_ci);
(gdb) 
94          status = 1;
(gdb) 
95          ar->i_ci = cast_int(ci - L->base_ci);
(gdb) 
104     }
(gdb) 
luaL_where (L=0x5d03c48, level=1) at lauxlib.c:76
76          lua_getinfo(L, "Sl", &ar);  /* get info about it */
(gdb) 
lua_getinfo (L=0x5d03c48, what=0x878100 "Sl", ar=0x22eb90) at ldebug.c:232
232     LUA_API int lua_getinfo (lua_State *L, const char *what, lua_Debug *ar) 
{
(gdb) 
234       Closure *f = NULL;
(gdb) 
235       CallInfo *ci = NULL;
(gdb) 
237       if (*what == '>') {
(gdb) 
244       else if (ar->i_ci != 0) {  /* no tail call? */
(gdb) 
245         ci = L->base_ci + ar->i_ci;
(gdb) 
247         f = clvalue(ci->func);
(gdb) 
195       int status = 1;
(gdb) 
196       if (f == NULL) {
(gdb) 
194                         Closure *f, CallInfo *ci) {
(gdb) 
196       if (f == NULL) {
(gdb) 
200       for (; *what; what++) {
(gdb) 
201         switch (*what) {
(gdb) 
151       if (cl->c.isC) {
(gdb) 
158         ar->source = getstr(cl->l.p->source);
(gdb) 
159         ar->linedefined = cl->l.p->linedefined;
(gdb) 
160         ar->lastlinedefined = cl->l.p->lastlinedefined;
(gdb) 
161         ar->what = (ar->linedefined == 0) ? "main" : "Lua";
(gdb) 
160         ar->lastlinedefined = cl->l.p->lastlinedefined;
(gdb) 
161         ar->what = (ar->linedefined == 0) ? "main" : "Lua";
(gdb) 
163       luaO_chunkid(ar->short_src, ar->source, LUA_IDSIZE);
(gdb) 
200       for (; *what; what++) {
(gdb) 
163       luaO_chunkid(ar->short_src, ar->source, LUA_IDSIZE);
(gdb) 
luaO_chunkid (out=0x22ebb4 "0üo", 
    source=0x5cec020 "\nlevelw = 20\nlevelh = 13\n\ncreate_world( levelw, 
levelh)\ndraw_border(\"st-wood\")\nfill_floor(\"fl-leavesb\", 
0,0,levelw,levelh)\n\noxyd( 4,4)\noxyd( 14,4)\n\nset_actor(\"ac-blackball\", 4, 
11)\n\nset_stone(\"st-swit"..., bufflen=60) at lobject.c:182
182     void luaO_chunkid (char *out, const char *source, size_t bufflen) {
(gdb) 
183       if (*source == '=') {
(gdb) 
188         if (*source == '@') {
(gdb) 
201           size_t len = strcspn(source, "\n\r");  /* stop at first newline */
(gdb) 
202           bufflen -= sizeof(" [string \"...\"] ");
(gdb) 
201           size_t len = strcspn(source, "\n\r");  /* stop at first newline */
(gdb) 
203           if (len > bufflen) len = bufflen;
(gdb) 
204           strcpy(out, "[string \"");
(gdb) 
205           if (source[len] != '\0') {  /* must truncate? */
(gdb) 
206             strncat(out, source, len);
(gdb) 
207             strcat(out, "...");
(gdb) 
211           strcat(out, "\"]");
(gdb) 
214     }
(gdb) 
lua_getinfo (L=0x5d03c48, what=0x878100 "Sl", ar=0x22eb90) at ldebug.c:200
200       for (; *what; what++) {
(gdb) 
201         switch (*what) {
(gdb) 
207             ar->currentline = (ci) ? currentline(L, ci) : -1;
(gdb) 
currentline (L=0x5d03c48, ci=0x3c) at ldebug.c:44
44      static int currentline (lua_State *L, CallInfo *ci) {
(gdb) 
45        int pc = currentpc(L, ci);
(gdb) 
currentpc (L=0x5cda5c8, ci=0x5cda5c8) at ldebug.c:36
36      static int currentpc (lua_State *L, CallInfo *ci) {
(gdb) 
37        if (!isLua(ci)) return -1;  /* function is not a Lua function? */
(gdb) 
38        if (ci == L->ci)
(gdb) 
41      }
(gdb) 
40        return pcRel(ci->savedpc, ci_func(ci)->l.p);
(gdb) 
41      }
(gdb) 
currentpc (L=0x5cfd2cc, ci=0x5cda5c8) at ldebug.c:40
40        return pcRel(ci->savedpc, ci_func(ci)->l.p);
(gdb) 
41      }
(gdb) 
currentline (L=0x4, ci=0x5cda5c8) at ldebug.c:46
46        if (pc < 0)
(gdb) 
47          return -1;  /* only active lua functions have current-line 
information */
(gdb) 
46        if (pc < 0)
(gdb) 
49          return getline(ci_func(ci)->l.p, pc);
(gdb) 
50      }
(gdb) 
lua_getinfo (L=0x5d03c48, what=0x878100 "Sl", ar=0x22eb90) at ldebug.c:200
200       for (; *what; what++) {
(gdb) 
207             ar->currentline = (ci) ? currentline(L, ci) : -1;
(gdb) 
200       for (; *what; what++) {
(gdb) 
227       }
(gdb) 
250       if (strchr(what, 'f')) {
(gdb) 
255       if (strchr(what, 'L'))
(gdb) 
259     }
(gdb) 
luaL_where (L=0x5d03c48, level=1) at lauxlib.c:77
77          if (ar.currentline > 0) {  /* is there info? */
(gdb) 
78            lua_pushfstring(L, "%s:%d: ", ar.short_src, ar.currentline);
(gdb) 
lua_pushfstring (L=0x5d03c48, fmt=0x878103 "%s:%d: ") at lapi.c:466
466     LUA_API const char *lua_pushfstring (lua_State *L, const char *fmt, 
...) {
(gdb) 
470       luaC_checkGC(L);
(gdb) 
471       va_start(argp, fmt);
(gdb) 
472       ret = luaO_pushvfstring(L, fmt, argp);
(gdb) 
luaO_pushvfstring (L=0x5d03c48, fmt=0x878103 "%s:%d: ", 
    argp=0x22ebb4 "[string \"...\"]") at lobject.c:111
111     const char *luaO_pushvfstring (lua_State *L, const char *fmt, va_list 
argp) {
(gdb) 
113       pushstr(L, "");
(gdb) 
111     const char *luaO_pushvfstring (lua_State *L, const char *fmt, va_list 
argp) {
(gdb) 
112       int n = 1;
(gdb) 
111     const char *luaO_pushvfstring (lua_State *L, const char *fmt, va_list 
argp) {
(gdb) 
113       pushstr(L, "");
(gdb) 
pushstr (L=0x5d03c48, str=0x8785f0 "") at lobject.c:105
105       setsvalue2s(L, L->top, luaS_new(L, str));
(gdb) 
luaS_newlstr (L=0x5d03c48, str=0x8785f0 "", l=0) at lstring.c:77
77        unsigned int h = cast(unsigned int, l);  /* seed */
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
78        size_t step = (l>>5)+1;  /* if string is too long, don't hash all its 
chars */
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
82        for (o = G(L)->strt.hash[lmod(h, G(L)->strt.size)];
(gdb) 
86          if (ts->tsv.len == l && (memcmp(str, getstr(ts), l) == 0)) {
(gdb) 
88            if (isdead(G(L), o)) changewhite(o);
(gdb) 
93      }
(gdb) 
51                                             unsigned int h) {
(gdb) 
93      }
(gdb) 
pushstr (L=0x5d03c48, str=0x8785f0 "") at lobject.c:106
106       incr_top(L);
(gdb) 
105       setsvalue2s(L, L->top, luaS_new(L, str));
(gdb) 
106       incr_top(L);
(gdb) 
luaO_pushvfstring (L=0x5d03c48, fmt=0x878103 "%s:%d: ", argp=0x22eb88 "´ë\"")
    at lobject.c:115
115         const char *e = strchr(fmt, '%');
(gdb) 
116         if (e == NULL) break;
(gdb) 
117         setsvalue2s(L, L->top, luaS_newlstr(L, fmt, e-fmt));
(gdb) 
luaS_newlstr (L=0x5d03c48, str=0x878103 "%s:%d: ", l=0) at lstring.c:77
77        unsigned int h = cast(unsigned int, l);  /* seed */
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
78        size_t step = (l>>5)+1;  /* if string is too long, don't hash all its 
chars */
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
82        for (o = G(L)->strt.hash[lmod(h, G(L)->strt.size)];
(gdb) 
86          if (ts->tsv.len == l && (memcmp(str, getstr(ts), l) == 0)) {
(gdb) 
88            if (isdead(G(L), o)) changewhite(o);
(gdb) 
93      }
(gdb) 
51                                             unsigned int h) {
(gdb) 
93      }
(gdb) 
luaO_pushvfstring (L=0x5d03c48, fmt=0x878103 "%s:%d: ", argp=0x22eb88 "´ë\"")
    at lobject.c:118
118         incr_top(L);
(gdb) 
117         setsvalue2s(L, L->top, luaS_newlstr(L, fmt, e-fmt));
(gdb) 
118         incr_top(L);
(gdb) 
119         switch (*(e+1)) {
(gdb) 
118         incr_top(L);
(gdb) 
119         switch (*(e+1)) {
(gdb) 
121             const char *s = va_arg(argp, char *);
(gdb) 
122             if (s == NULL) s = "(null)";
(gdb) 
158             pushstr(L, buff);
(gdb) 
pushstr (L=0x5d03c48, str=0x22ebb4 "[string \"...\"]") at lobject.c:105
105       setsvalue2s(L, L->top, luaS_new(L, str));
(gdb) 
luaS_newlstr (L=0x5d03c48, str=0x22ebb4 "[string \"...\"]", l=14)
    at lstring.c:77
77        unsigned int h = cast(unsigned int, l);  /* seed */
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
78        size_t step = (l>>5)+1;  /* if string is too long, don't hash all its 
chars */
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
82        for (o = G(L)->strt.hash[lmod(h, G(L)->strt.size)];
(gdb) 
86          if (ts->tsv.len == l && (memcmp(str, getstr(ts), l) == 0)) {
(gdb) 
54        if (l+1 > (MAX_SIZET - sizeof(TString))/sizeof(char))
(gdb) 
56        ts = cast(TString *, luaM_malloc(L, 
(l+1)*sizeof(char)+sizeof(TString)));
(gdb) 
luaM_realloc_ (L=0x5d03c48, block=0x0, osize=0, nsize=31) at lmem.c:77
77        global_State *g = G(L);
(gdb) 
76      void *luaM_realloc_ (lua_State *L, void *block, size_t osize, size_t 
nsize) {
(gdb) 
77        global_State *g = G(L);
(gdb) 
79        block = (*g->frealloc)(g->ud, block, osize, nsize);
(gdb) 
l_alloc (ud=0x0, ptr=0x0, osize=0, nsize=31) at lauxlib.c:622
622     static void *l_alloc (void *ud, void *ptr, size_t osize, size_t nsize) {
(gdb) 
625       if (nsize == 0) {
(gdb) 
630         return realloc(ptr, nsize);
(gdb) 
631     }
(gdb) 
l_alloc (ud=0x5d03c48, ptr=0x0, osize=0, nsize=31) at lauxlib.c:630
630         return realloc(ptr, nsize);
(gdb) 
luaM_realloc_ (L=0x5d03c48, block=0x0, osize=0, nsize=31) at lmem.c:80
80        if (block == NULL && nsize > 0)
(gdb) 
79        block = (*g->frealloc)(g->ud, block, osize, nsize);
(gdb) 
80        if (block == NULL && nsize > 0)
(gdb) 
83        g->totalbytes = (g->totalbytes - osize) + nsize;
(gdb) 
85      }
(gdb) 
luaS_newlstr (L=0x5d03c48, str=0x22ebb4 "[string \"...\"]", l=14)
    at lstring.c:57
57        ts->tsv.len = l;
(gdb) 
58        ts->tsv.hash = h;
(gdb) 
59        ts->tsv.marked = luaC_white(G(L));
(gdb) 
60        ts->tsv.tt = LUA_TSTRING;
(gdb) 
61        ts->tsv.reserved = 0;
(gdb) 
59        ts->tsv.marked = luaC_white(G(L));
(gdb) 
62        memcpy(ts+1, str, l*sizeof(char));
(gdb) 
63        ((char *)(ts+1))[l] = '\0';  /* ending 0 */
(gdb) 
64        tb = &G(L)->strt;
(gdb) 
65        h = lmod(h, tb->size);
(gdb) 
64        tb = &G(L)->strt;
(gdb) 
65        h = lmod(h, tb->size);
(gdb) 
66        ts->tsv.next = tb->hash[h];  /* chain new entry */
(gdb) 
67        tb->hash[h] = obj2gco(ts);
(gdb) 
68        tb->nuse++;
(gdb) 
69        if (tb->nuse > cast(lu_int32, tb->size) && tb->size <= MAX_INT/2)
(gdb) 
68        tb->nuse++;
(gdb) 
69        if (tb->nuse > cast(lu_int32, tb->size) && tb->size <= MAX_INT/2)
(gdb) 
68        tb->nuse++;
(gdb) 
69        if (tb->nuse > cast(lu_int32, tb->size) && tb->size <= MAX_INT/2)
(gdb) 
93      }
(gdb) 
51                                             unsigned int h) {
(gdb) 
93      }
(gdb) 
pushstr (L=0x5d03c48, str=0x22ebb4 "[string \"...\"]") at lobject.c:106
106       incr_top(L);
(gdb) 
105       setsvalue2s(L, L->top, luaS_new(L, str));
(gdb) 
106       incr_top(L);
(gdb) 
luaO_pushvfstring (L=0x5d03c48, fmt=0x878103 "%s:%d: ", argp=0x22eb8c "\030")
    at lobject.c:162
162         n += 2;
(gdb) 
163         fmt = e+2;
(gdb) 
115         const char *e = strchr(fmt, '%');
(gdb) 
116         if (e == NULL) break;
(gdb) 
117         setsvalue2s(L, L->top, luaS_newlstr(L, fmt, e-fmt));
(gdb) 
luaS_newlstr (L=0x5d03c48, str=0x878105 ":%d: ", l=1) at lstring.c:77
77        unsigned int h = cast(unsigned int, l);  /* seed */
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
78        size_t step = (l>>5)+1;  /* if string is too long, don't hash all its 
chars */
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
82        for (o = G(L)->strt.hash[lmod(h, G(L)->strt.size)];
(gdb) 
54        if (l+1 > (MAX_SIZET - sizeof(TString))/sizeof(char))
(gdb) 
56        ts = cast(TString *, luaM_malloc(L, 
(l+1)*sizeof(char)+sizeof(TString)));
(gdb) 
luaM_realloc_ (L=0x5d03c48, block=0x0, osize=0, nsize=18) at lmem.c:77
77        global_State *g = G(L);
(gdb) 
76      void *luaM_realloc_ (lua_State *L, void *block, size_t osize, size_t 
nsize) {
(gdb) 
77        global_State *g = G(L);
(gdb) 
79        block = (*g->frealloc)(g->ud, block, osize, nsize);
(gdb) 
l_alloc (ud=0x0, ptr=0x0, osize=0, nsize=18) at lauxlib.c:622
622     static void *l_alloc (void *ud, void *ptr, size_t osize, size_t nsize) {
(gdb) 
625       if (nsize == 0) {
(gdb) 
630         return realloc(ptr, nsize);
(gdb) 
631     }
(gdb) 
l_alloc (ud=0x5d03c48, ptr=0x0, osize=0, nsize=18) at lauxlib.c:630
630         return realloc(ptr, nsize);
(gdb) 
luaM_realloc_ (L=0x5d03c48, block=0x0, osize=0, nsize=18) at lmem.c:80
80        if (block == NULL && nsize > 0)
(gdb) 
79        block = (*g->frealloc)(g->ud, block, osize, nsize);
(gdb) 
80        if (block == NULL && nsize > 0)
(gdb) 
83        g->totalbytes = (g->totalbytes - osize) + nsize;
(gdb) 
85      }
(gdb) 
luaS_newlstr (L=0x5d03c48, str=0x878105 ":%d: ", l=1) at lstring.c:57
57        ts->tsv.len = l;
(gdb) 
58        ts->tsv.hash = h;
(gdb) 
59        ts->tsv.marked = luaC_white(G(L));
(gdb) 
60        ts->tsv.tt = LUA_TSTRING;
(gdb) 
61        ts->tsv.reserved = 0;
(gdb) 
59        ts->tsv.marked = luaC_white(G(L));
(gdb) 
62        memcpy(ts+1, str, l*sizeof(char));
(gdb) 
63        ((char *)(ts+1))[l] = '\0';  /* ending 0 */
(gdb) 
64        tb = &G(L)->strt;
(gdb) 
65        h = lmod(h, tb->size);
(gdb) 
64        tb = &G(L)->strt;
(gdb) 
65        h = lmod(h, tb->size);
(gdb) 
66        ts->tsv.next = tb->hash[h];  /* chain new entry */
(gdb) 
67        tb->hash[h] = obj2gco(ts);
(gdb) 
68        tb->nuse++;
(gdb) 
69        if (tb->nuse > cast(lu_int32, tb->size) && tb->size <= MAX_INT/2)
(gdb) 
68        tb->nuse++;
(gdb) 
69        if (tb->nuse > cast(lu_int32, tb->size) && tb->size <= MAX_INT/2)
(gdb) 
68        tb->nuse++;
(gdb) 
69        if (tb->nuse > cast(lu_int32, tb->size) && tb->size <= MAX_INT/2)
(gdb) 
93      }
(gdb) 
51                                             unsigned int h) {
(gdb) 
93      }
(gdb) 
luaO_pushvfstring (L=0x5d03c48, fmt=0x878103 "%s:%d: ", argp=0x22eb8c "\030")
    at lobject.c:118
118         incr_top(L);
(gdb) 
117         setsvalue2s(L, L->top, luaS_newlstr(L, fmt, e-fmt));
(gdb) 
118         incr_top(L);
(gdb) 
119         switch (*(e+1)) {
(gdb) 
118         incr_top(L);
(gdb) 
119         switch (*(e+1)) {
(gdb) 
139             setnvalue(L->top, cast_num(va_arg(argp, l_uacNumber)));
(gdb) 
134             setnvalue(L->top, cast_num(va_arg(argp, int)));
(gdb) 
139             setnvalue(L->top, cast_num(va_arg(argp, l_uacNumber)));
(gdb) 
140             incr_top(L);
(gdb) 
162         n += 2;
(gdb) 
163         fmt = e+2;
(gdb) 
115         const char *e = strchr(fmt, '%');
(gdb) 
116         if (e == NULL) break;
(gdb) 
165       pushstr(L, fmt);
(gdb) 
pushstr (L=0x5d03c48, str=0x878108 ": ") at lobject.c:105
105       setsvalue2s(L, L->top, luaS_new(L, str));
(gdb) 
luaS_newlstr (L=0x5d03c48, str=0x878108 ": ", l=2) at lstring.c:77
77        unsigned int h = cast(unsigned int, l);  /* seed */
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
78        size_t step = (l>>5)+1;  /* if string is too long, don't hash all its 
chars */
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
81          h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1]));
(gdb) 
80        for (l1=l; l1>=step; l1-=step)  /* compute hash */
(gdb) 
82        for (o = G(L)->strt.hash[lmod(h, G(L)->strt.size)];
(gdb) 
54        if (l+1 > (MAX_SIZET - sizeof(TString))/sizeof(char))
(gdb) 
56        ts = cast(TString *, luaM_malloc(L, 
(l+1)*sizeof(char)+sizeof(TString)));
(gdb) 
luaM_realloc_ (L=0x5d03c48, block=0x0, osize=0, nsize=19) at lmem.c:77
77        global_State *g = G(L);
(gdb) 
76      void *luaM_realloc_ (lua_State *L, void *block, size_t osize, size_t 
nsize) {
(gdb) 
77        global_State *g = G(L);
(gdb) 
79        block = (*g->frealloc)(g->ud, block, osize, nsize);
(gdb) 
l_alloc (ud=0x0, ptr=0x0, osize=0, nsize=19) at lauxlib.c:622
622     static void *l_alloc (void *ud, void *ptr, size_t osize, size_t nsize) {
(gdb) 
625       if (nsize == 0) {
(gdb) 
630         return realloc(ptr, nsize);
(gdb) 
631     }
(gdb) 
l_alloc (ud=0x5d03c48, ptr=0x0, osize=0, nsize=19) at lauxlib.c:630
630         return realloc(ptr, nsize);
(gdb) 
luaM_realloc_ (L=0x5d03c48, block=0x0, osize=0, nsize=19) at lmem.c:80
80        if (block == NULL && nsize > 0)
(gdb) 
79        block = (*g->frealloc)(g->ud, block, osize, nsize);
(gdb) 
80        if (block == NULL && nsize > 0)
(gdb) 
83        g->totalbytes = (g->totalbytes - osize) + nsize;
(gdb) 
85      }
(gdb) 
luaS_newlstr (L=0x5d03c48, str=0x878108 ": ", l=2) at lstring.c:57
57        ts->tsv.len = l;
(gdb) 
58        ts->tsv.hash = h;
(gdb) 
59        ts->tsv.marked = luaC_white(G(L));
(gdb) 
60        ts->tsv.tt = LUA_TSTRING;
(gdb) 
61        ts->tsv.reserved = 0;
(gdb) 
59        ts->tsv.marked = luaC_white(G(L));
(gdb) 
62        memcpy(ts+1, str, l*sizeof(char));
(gdb) 
63        ((char *)(ts+1))[l] = '\0';  /* ending 0 */
(gdb) 
64        tb = &G(L)->strt;
(gdb) 
65        h = lmod(h, tb->size);
(gdb) 
64        tb = &G(L)->strt;
(gdb) 
65        h = lmod(h, tb->size);
(gdb) 
66        ts->tsv.next = tb->hash[h];  /* chain new entry */
(gdb) 
67        tb->hash[h] = obj2gco(ts);
(gdb) 
68        tb->nuse++;
(gdb) 
69        if (tb->nuse > cast(lu_int32, tb->size) && tb->size <= MAX_INT/2)
(gdb) 
68        tb->nuse++;
(gdb) 
69        if (tb->nuse > cast(lu_int32, tb->size) && tb->size <= MAX_INT/2)

(gdb) 68          tb->nuse++;
(gdb) 
69        if (tb->nuse > cast(lu_int32, tb->size) && tb->size <= MAX_INT/2)
(gdb) 
93      }
(gdb) 
51                                             unsigned int h) {
(gdb) 
93      }
(gdb) 
pushstr (L=0x5d03c48, str=0x878108 ": ") at lobject.c:106
106       incr_top(L);
(gdb) 
105       setsvalue2s(L, L->top, luaS_new(L, str));
(gdb) 
106       incr_top(L);
(gdb) 
luaO_pushvfstring (L=0x5d03c48, fmt=0x878103 "%s:%d: ", argp=0x22eb90 "(£}")
    at lobject.c:166
166       luaV_concat(L, n+1, cast_int(L->top - L->base) - 1);
(gdb) 

Program received signal SIGSEGV, Segmentation fault.
0x40000060 in ?? ()
(gdb) 
(gdb) Cannot find bounds of current function


reply via email to

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