Hi,
Tiago Jorge wrote: <snip>
WOO_Send_Retval WOO_send(void){ CORBA_Environment env = dice_default_environment;
<snip>
#####################################################################
all ok, until i get it to run... There, he gives me an error (page fault) at the stubs, when unmarshalling the return value of the woo_send() call, more precisely, when allocating the string(tag) inside the return structure. the line is the following:
_dice_return.tag = (CORBA_char_ptr)(_dice_corba_env->malloc)(_dice_tmp_offset);
i've checked the string size tha comes from the server and it is correct...
So... why is it page faulting??
That's strange. What version of dice are you using? With the above code it should not pagefault, but instead jump into the kernel-debugger.
Ok. You are using the default environment, which contains function pointers to malloc and free functions to allocate memory for such things as string returned from the server. These functions are (in old versions of dice set to NULL -> pagefault) or a default function (in the latest version), which jumps into the kernel debugger (to allow to see why its pagefaulting :). If you turn on warnings when using dice (-Wall or see --help for other options) it tells you when and for which variable it uses malloc. The idea is, that you can provide your own versions of malloc and free (just have to have the same signature) and set them in the local environment:
CORBA_Environment env = dice_default_environment; env.malloc = (dice_malloc)malloc;
The cast is to eliminate a warning: the libc malloc usually uses size_t type, which is not defined in L4Env.
Hope that helps, Ron.