The ticket does not contain a fix version or patch with asf inclusion so when looking for available tickets for a resease this would have been missed unless someone was active on the ticket or searching for this specific problem.
-Jake http://thrift.apache.org/docs/HowToContribute/ On Thursday, March 29, 2012, Jerry Gally (Commented) (JIRA) wrote: > > [ > https://issues.apache.org/jira/browse/THRIFT-1389?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13241828#comment-13241828] > > Jerry Gally commented on THRIFT-1389: > ------------------------------------- > > When I ran accross this issue last year, and went searching for kindred > spirits, I was left with the distinct impression that the C Thrift > community was, as far as I could tell, virtually non-existent beyond the > original _c_glib_generator.cc developer/contributer. > > Recieving your follow-up question on this issue is kind of like detecting > a radio signal in the Search for Extra-Terrestrial Intellgence (SETI) > program ;-) > > I, on the other hand, am no longer delving into the C Thrift context, but > I do hope you find kindred spirits 8-) > > > c_glib_generator.cc generates leaking code for > cassandra_client_get_slice() and cassandra_client_get() > > > ------------------------------------------------------------------------------------------------------ > > > > Key: THRIFT-1389 > > URL: https://issues.apache.org/jira/browse/THRIFT-1389 > > Project: Thrift > > Issue Type: Bug > > Components: C glib - Compiler, C glib - Library > > Affects Versions: 0.6.1 > > Environment: Used with Cassandra 0.8.4 on Linux 2.6.32 with > x86_64 > > Reporter: Jerry Gally > > > > The generated cassandra.c cassandra_client_recv_get_slice() code for > list processing instantiates an object of TYPE_COLUMN_OR_SUPER_COLUMN then > calls thrift_struct_read() as in the following code snippet,: > > <... snip> > > switch (fid) > > { > > case 0: > > if (ftype == T_LIST) > > { > > { > > guint32 size; > > ThriftType element_type; > > if ((ret = thrift_protocol_read_list_begin (protocol, > &element_type, &size, error)) < 0) > > return 0; > > xfer += ret; > > /* iterate through list elements */ > > guint32 i; > > for (i = 0; i < size; i++) > > { > > ColumnOrSuperColumn * _elem19; > > _elem19 = g_object_new (TYPE_COLUMN_OR_SUPER_COLUMN, > NULL); > > //printf("\nrecv_slice made %p\n", _elem19->column); > > if ((ret = thrift_struct_read (THRIFT_STRUCT (_elem19), > protocol, error)) < 0) > > <\snip ...> > > When the object of TYPE_COLUMN_OR_SUPER_COLUMN is instantiated, it > in-turn instantiates a child of TYPE_COLUMN: > > <... snip> > > void > > column_or_super_column_instance_init (ColumnOrSuperColumn * object) > > { > > /* satisfy -Wall */ > > THRIFT_UNUSED_VAR (object); > > object->column = g_object_new (TYPE_COLUMN, NULL); > > object->__isset_column = FALSE; > > </snip ...> > > But this instance reference is lost and replaced by a new TYPE_COLUMN > instantiation reference when the column member is read by > column_or_super_column_read() within the same execution context of the top > level cassandra_client_recv_get_slice() call: > > <... snip> > > switch (fid) > > { > > case 1: > > if (ftype == T_STRUCT) > > { > > this_object->column = g_object_new (TYPE_COLUMN, NULL); > > if ((ret = thrift_struct_read (THRIFT_STRUCT > (this_object->column), protocol, error)) < 0) > > </snip ...> > > The above snippits/logic/leak described above for > cassandra_client_get_slice() also apply for cassandra_client_get(). > > -- > This message is automatically generated by JIRA. > If you think it was sent incorrectly, please contact your JIRA > administrators: > https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa > For more information on JIRA, see: http://www.atlassian.com/software/jira > > >
