You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tuscany.apache.org by Jean-Sebastien Delfino <js...@apache.org> on 2006/12/01 17:59:00 UTC

[C++] Python service wrapper returning data on the stack

Andy,

I think that the Python service wrapper sometimes returns data on the 
stack, the data allocated by PyValue appears to be valid inside the 
wrapper itself but gets out of scope after the wrapper has returned, 
causing memory violations or garbage to be returned.

Could you please take a look at my change under revision r481279? I 
copied a char* into a new string to workaround the particular case I ran 
into, but there's probably a better way to fix this and make sure that 
strings returned by the wrapper in general are allocated on the heap 
instead of the stack.

Thanks...

-- 
Jean-Sebastien


---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-dev-help@ws.apache.org


Re: [C++] Python service wrapper returning data on the stack

Posted by Jean-Sebastien Delfino <js...@apache.org>.
Andrew Borley wrote:
> On 12/1/06, Jean-Sebastien Delfino <js...@apache.org> wrote:
>> Andy,
>>
>> I think that the Python service wrapper sometimes returns data on the
>> stack, the data allocated by PyValue appears to be valid inside the
>> wrapper itself but gets out of scope after the wrapper has returned,
>> causing memory violations or garbage to be returned.
>>
>> Could you please take a look at my change under revision r481279? I
>> copied a char* into a new string to workaround the particular case I ran
>> into, but there's probably a better way to fix this and make sure that
>> strings returned by the wrapper in general are allocated on the heap
>> instead of the stack.
>>
>> Thanks...
>>
>> -- 
>> Jean-Sebastien
>>
>
> Hi Sebastien,
>
> This change looks good, thanks.
>
> It strikes me that we may need some kind of "extension-builder's
> library" that can be used to manage data and the conversion of data
> and other chunks of code that we are seeing repeated in various places
> in the extensions. With something like this, issues such as the one
> you found above should be found & fixed earlier. What do people think?
>
> Cheers
> Andy
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tuscany-dev-unsubscribe@ws.apache.org
> For additional commands, e-mail: tuscany-dev-help@ws.apache.org
>
>

Andy,

Yes, I completely agree.

The following would help a lot:

1. A utility to navigate an SDO and get the parameters out, whatever 
form of SDO it is (open, not open, with lists, no lists, with a schema, 
with no schema at all)

2. A utility to put parameters of an invocation into an SDO, covering 
all these cases as well

3. Additions to our Operation object and/or additional utility classes 
to facilitate data handling:
  -in particular data type conversions, using pieces (1) and (2) above + 
any other data conversions we've identified,
  - memory allocations and any copies,
  - pass by reference vs pass by value semantics,
  - log and debugging code to help track what data flows from where to 
where,
  ... and make it clear to the extension developer who allocates / frees 
the data and when.

I have started to tackle (1) with my "Digging data out of an SDO" 
earlier thread and should be able to contribute this in a day or two, 
part (2) may or may not build on (1) later I'm not sure... but you're 
right that we really need to sort out the bigger part (3), and it sounds 
like you're volunteering for it? :)

-- 
Jean-Sebastien


---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-dev-help@ws.apache.org


Re: [C++] Python service wrapper returning data on the stack

Posted by Andrew Borley <aj...@gmail.com>.
On 12/1/06, Jean-Sebastien Delfino <js...@apache.org> wrote:
> Andy,
>
> I think that the Python service wrapper sometimes returns data on the
> stack, the data allocated by PyValue appears to be valid inside the
> wrapper itself but gets out of scope after the wrapper has returned,
> causing memory violations or garbage to be returned.
>
> Could you please take a look at my change under revision r481279? I
> copied a char* into a new string to workaround the particular case I ran
> into, but there's probably a better way to fix this and make sure that
> strings returned by the wrapper in general are allocated on the heap
> instead of the stack.
>
> Thanks...
>
> --
> Jean-Sebastien
>

Hi Sebastien,

This change looks good, thanks.

It strikes me that we may need some kind of "extension-builder's
library" that can be used to manage data and the conversion of data
and other chunks of code that we are seeing repeated in various places
in the extensions. With something like this, issues such as the one
you found above should be found & fixed earlier. What do people think?

Cheers
Andy

---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-dev-help@ws.apache.org