Coda File System

Re: bandwidth measure and disconnections

From: Michael Reithinger <mreithinger_at_web.de>
Date: Fri, 02 Jul 2004 03:23:47 +0200
> The crash happened in the RPC2 library, but you didn't mention which
> rpc2 version you have installed. From the arguments it looks like it
> tried to send a ViceGetWBPermit rpc call, but I don't see right now
how
> packing those arguments (only 4 integers) can lead to a crash.

In case of interrest:
I also played around with write-back, and I also got venus crashing
after 
invoking "cfs wb". I think the evil line can be found in the file
vol_permits.cc:

In the method "int repvol::GetPermit(uid_t uid)" you can read:

    code = (int) MRPC_MakeMulti(ViceGetWBPermit_OP, ViceGetWBPermit_PTR,
				VSG_MEMBERS, m->rocc.handles,
				m->rocc.retcodes, m->rocc.MIp, 0, 0,
				vid, fid, permitvar_ptrs);
                                     ---
the parameter fid is a structure and has to be passed by reference and
not by value.
When I change the function call to
    code = (int) MRPC_MakeMulti(ViceGetWBPermit_OP, ViceGetWBPermit_PTR,
				VSG_MEMBERS, m->rocc.handles,
				m->rocc.retcodes, m->rocc.MIp, 0, 0,
				vid, &fid, permitvar_ptrs);
                                     -----

everything works allright... and I get a "not permitted" code back.

Cheers 

Michael
Received on 2004-07-01 21:27:27