Hi Parrot-Freaks! I've used PerlInt instead of PerlString by mistake. The error occurs if code like this is executed a few times: ("data" is a PerlInt)
find_global P1, "data" set S1, P1 # .... set P1, S1 It works a few thousend times, then it stops working often resulting in a crash. The code works like expected when - using PerlString instead of PerlInt or - adding sweepoff (at the beginning of the program) or - .. you have the right amount of global data (more or less store_global and/or find_global calls result in different time until the bug occurs) An example is attached. cya, Jens Rieks
# # create some globals # new P1, PerlInt set P1, 1 store_global "g1", P1 new P1, PerlInt set P1, 1 store_global "g2", P1 # # the next is NOT a PerlString # new P1, PerlInt #new P1, PerlString set P1, "EverythingIsOkay" store_global "data", P1 # # some more globals # new P1, PerlInt store_global "g4", P1 new P1, PerlInt set P1, 0 store_global "counter", P1 # # call "do_something" a few times # bsr do_something bsr do_something bsr do_something bsr do_something bsr do_something bsr do_something bsr do_something bsr do_something bsr do_something bsr do_something bsr do_something bsr do_something bsr do_something bsr do_something # # endless loop # run: bsr counter branch run end # supress warning do_something: find_global P1, "data" set S1, P1 set P1, S1 ret counter: find_global P1, "counter" inc P1 print " counter: " print P1 print " '" # find_global P1, "counter" # find_global P1, "counter" # find_global P1, "counter" find_global P1, "data" print P1 print "'\n" ret