Hi all,

I have reduced the code to this:

In a first shell, I run the fragment:

functor

import
   Connection
   System

define

   functor X
   define
      _ = System
   end


   Obj = {New class $
         feat utils
         meth init
            self.utils = coucou
         end
          end
      init}
   Ticket = {Connection.offerUnlimited Obj}

   {System.printInfo "Ticket is "}
   {System.show Ticket}

end



This will print a ticket to the standard output. Copy it and give it as
argument in a  second shell to this:

functor

import
   Application
   System
   Connection

define

   Specs =  record(ticket(single char:&t type:atom))
   Args = {Application.getArgs Specs}

   {System.showInfo "DEBUG -- A"}
   Obj1 = {Connection.take Args.ticket}

   {System.showInfo "DEBUG -- B"}
   {System.show Obj1.utils}

   {System.showInfo "DEBUG -- C"}

end



In my case, the second Oz vm will crash with
    "gentraverser.hh:1484 assertion 'array[pos].n == (OZ_Term) -1' failed"

(I used the official 1.3.2 distribution, with the DEBUG_CHECK flag enabled,
optimizations disabled, and with Raphael change in tcpTransObj.cc).

Though the code fragment do not look useful or meaningful, they result from
a reduction of some original useful and meaningful code ;)
Note that the definition of the unused "functor X" seems to be necessary to
observe the bug.

I might be able to reduce this code further, but I need a break!
Can you tell me if you can reproduce the bug with this?

Thanks,
Christophe



On Wed, Apr 9, 2008 at 10:59 AM, Christophe Taton <
[EMAIL PROTECTED]> wrote:

> Hi Raphael,
>
> I changed the assertion in the way you describe. This effectively removed
> the assertion failure on the first host, but not on the second host which
> now systematically fails with :
>
>     gentraverser.hh:1484 assertion 'array[pos].n == (OZ_Term) -1' failed
>
> At this point, the vm stack looks:
> #0  OZ_error (format=0x8168b33 "%s:%d assertion '%s' failed") at
> base.cc:72
> #1  0x0812556e in BuilderRefTable::set (this=0x8274040, val=3081482144,
> pos=1) at gentraverser.hh:1484
> #2  0x081255f2 in Builder::setTerm (this=0x827ba80, t=3081482144, i=1) at
> gentraverser.hh:1598
> #3  0x081266b2 in Builder::buildValueRef (this=0x827ba80, n=1) at
> gentraverser.hh:2036
> #4  0xb7b52e60 in dpUnmarshalTerm (bs=0x8273ca0, b=0x827ba80) at
> dpMarshaler.cc:1930
> #5  0xb7b8ddda in MsgContainer::unmarshal (this=0x826af00, bb=0x8273ca0,
> transController=0x824ba48) at msgContainer_marshal.m4cc:292
> #6  0xb7b99080 in TCPTransObj::unmarshal (this=0x8273d20) at
> tcpTransObj.cc:306
> #7  0xb7b98949 in TCPTransObj::readHandler (this=0x8273d20, fd=7) at
> tcpTransObj.cc:388
> #8  0xb7b989a4 in tcpTransObj_readHandler (fd=7, o=0x8273d20) at
> tcpTransObj.cc:56
> #9  0x080c0cc7 in oz_io_handle () at ioHandler.cc:216
> #10 0x080c280d in AM::checkStatus (this=0x8174e20, block=0) at am.cc:635
> #11 0x080c2954 in AM::suspendEngine (this=0x8174e20) at am.cc:528
> #12 0x080daaeb in scheduler () at scheduler.cc:88
> #13 0x08131a31 in OZ_main (argc=3, argv=0xbfa6dea4) at foreign.cc:2162
> #14 0x0812f6ee in main (argc=Cannot access memory at address 0xffffffff
>
>
> Actually, the corresponding failing Oz operation is the "transmission" of
> an instantiated Oz module from the first host to the second host. I'm still
> working on the extraction of a minimal Oz code that would reproduce this.
>
> cheers,
> Christophe
>
>
>
>
>
> On Wed, Apr 9, 2008 at 9:51 AM, Raphael Collet <
> [EMAIL PROTECTED]> wrote:
>
> > Dear Christophe,
> >
> > I had a look at the file tcpTransObj.cc.  I found out that the assertion
> > is incorrect.  Change the assertion as follows, and give it a try.
> >
> >    Assert(writeBuffer->availableSpace()>=0);
> >
> > The assertion looks wrong, but in fact it is correct this way, due to a
> > (stupid) feature of the buffer.
> >
> > Can you tell us the result?  I am not sure it will solve the problem,
> > but it's worth a try...
> >
> >
> > Cheers,
> > raph
> >
> > Christophe Taton wrote:
> >
> > > Amendment to my last message:
> > >
> > > When I run my project on two nodes, I observe two kinds of failure:
> > >  - either: "tcpTransObj.cc:192 assertion
> > > 'writeBuffer->availableSpace()>=1' failed" on the first node,
> > >  - or: "gentraverser.hh:1484 assertion 'array[pos].n == (OZ_Term) -1'
> > > failed" on the second node.
> > >
> > > Any idea? Does it make sense for me to look more deeply into this?
> > > Thanks,
> > >
> > > Christophe
> > >
> > > On Tue, Apr 8, 2008 at 11:05 PM, Christophe Taton <
> > > [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>>
> > > wrote:
> > >
> > >    Trying to find out what was going on, I rebuilt the vm with some
> > >    debugging flags. Rerunning my project under this vm always results
> > >    in the following assertion failure:
> > >    tcpTransObj.cc:192 assertion 'writeBuffer->availableSpace()>=1'
> > > failed
> > >
> > >
> > >    On Mon, Apr 7, 2008 at 10:33 AM, Christophe Taton
> > >    <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>>
> > > wrote:
> > >
> > >        Hi all,
> > >
> > >        I am experiencing a bug when running one of my projects in a
> > >        distributed environment, leading to a systematic crash of one
> > > of
> > >        the virtual machines (either a segfault or a "glibc: double
> > > free
> > >        or corruption..."). Unfortunately I have not yet been able to
> > >        isolate the origin of the bug.
> > >
> > >        I wondered whether there is a documentation on how to debug the
> > >        oz VM itself?
> > >
> > >        Thanks in advance for you help,
> > >        Christophe Taton
> > >
> > >
> > >
> > >
> > >
> > > ------------------------------------------------------------------------
> > >
> > >
> > > _________________________________________________________________________________
> > > mozart-users mailing list
> > > [email protected]
> > > http://www.mozart-oz.org/mailman/listinfo/mozart-users
> > >
> >
> >
> > _________________________________________________________________________________
> > mozart-users mailing list
> > [email protected]
> > http://www.mozart-oz.org/mailman/listinfo/mozart-users
> >
> >
>
_________________________________________________________________________________
mozart-users mailing list                               
[email protected]
http://www.mozart-oz.org/mailman/listinfo/mozart-users

Reply via email to