> 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



Reply via email to