Valgrind shows memory leak
Scott Zhong <[email protected]> Wed, 4 Jun 2014 13:34:15 -0600
| Newsgroups | gmane.comp.db.unixodbc.devel |
|---|---|
| Message-ID | <53D52D02E87FA04A948D9A74A7AE617C1543B26014@Eagle.Blue.Roguewave.Com> |
--===============0305119074==
Content-Language: en-US
Content-Type: multipart/alternative;
boundary="_000_53D52D02E87FA04A948D9A74A7AE617C1543B26014EagleBlueRogu_"
--_000_53D52D02E87FA04A948D9A74A7AE617C1543B26014EagleBlueRogu_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
Hi,
Valgrind 3.8.1 shows a memory leak in unixODBC 2.3.2 after setting SQL=
_ATTR_ODBC_CURSORS attribute to SQL_CUR_USE_ODBC and then connecting to a d=
ata source.
Testcase snippet:
...
SQLULEN attr_cur =3D SQL_CUR_USE_ODBC;
SQLSetConnectAttr (hdbc, SQL_ATTR_ODBC_CURSORS, (SQLPOINTER)(SQLLEN)attr_cu=
r, NULL);
SQLDriverConnect (hdbc, NULL, connStrIn, SQL_NTS, connStrOut, BUFFER_LEN, &=
connStrOutLen, SQL_DRIVER_NOPROMPT);
...
/>uname -srm
Linux 2.6.32-358.el6.x86_64 x86_64
/>cat /etc/redhat-release
Red Hat Enterprise Linux Server release 6.4 (Santiago)
/>g++ -g -I$ODBC/include testcase_unixodbc_leak.cpp -L$ODBC/lib -lodbc -lpt=
hread
/>valgrind --leak-check=3Dfull --show-reachable=3Dno --show-possibly-lost=
=3Dno --track-origins=3Dyes --num-callers=3D50 --gen-suppressions=3Dall --x=
ml=3Dyes --xml-file=3Dtestcase.valgrind a.out
Valgrind leak entry:
<error>
<unique>0xc1</unique>
<tid>1</tid>
<kind>Leak_DefinitelyLost</kind>
<xwhat>
<text>5,056 (64 direct, 4,992 indirect) bytes in 1 blocks are definitel=
y lost in loss record 167 of 170</text>
<leakedbytes>5056</leakedbytes>
<leakedblocks>1</leakedblocks>
</xwhat>
<stack>
<frame>
<ip>0x4A069EE</ip>
<obj>/usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so</obj>
<fn>malloc</fn>
<dir>/builddir/build/BUILD/valgrind-3.8.1/coregrind/m_replacemalloc</=
dir>
<file>vg_replace_malloc.c</file>
<line>270</line>
</frame>
<frame>
<ip>0x127A65E5</ip>
</frame>
<frame>
<ip>0x4C206BD</ip>
<obj>/amd/packages/mdx/redhat/databases/unixodbc/x86_64-gcc4.1.2/lib/=
libodbc.so.1.0.0</obj>
<fn>__connect_part_two</fn>
</frame>
<frame>
<ip>0x4C28F74</ip>
<obj>/amd/packages/mdx/redhat/databases/unixodbc/x86_64-gcc4.1.2/lib/=
libodbc.so.1.0.0</obj>
<fn>SQLDriverConnect</fn>
</frame>
<frame>
<ip>0x400F70</ip>
<obj>/amd/tmp/scottz/a.out</obj>
<fn>main</fn>
<dir>/nfs/tmp/scottz</dir>
<file>testcase_unixodbc_leak.cpp</file>
<line>208</line>
</frame>
</stack>
<suppression>
<sname>insert_a_suppression_name_here</sname>
<skind>Memcheck:Leak</skind>
<sframe> <fun>malloc</fun> </sframe>
<sframe> <obj>*</obj> </sframe>
<sframe> <fun>__connect_part_two</fun> </sframe>
<sframe> <fun>SQLDriverConnect</fun> </sframe>
<sframe> <fun>main</fun> </sframe>
<rawtext>
<![CDATA[
{
<insert_a_suppression_name_here>
Memcheck:Leak
fun:malloc
obj:*
fun:__connect_part_two
fun:SQLDriverConnect
fun:main
}
]]>
</rawtext>
</suppression>
</error>
Regards,
Scott Z.
--_000_53D52D02E87FA04A948D9A74A7AE617C1543B26014EagleBlueRogu_
Content-Type: text/html; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
<html xmlns:v=3D"urn:schemas-microsoft-com:vml" xmlns:o=3D"urn:schemas-micr=
osoft-com:office:office" xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" xmlns=3D"http:=
//www.w3.org/TR/REC-html40"><head><meta http-equiv=3DContent-Type content=
=3D"text/html; charset=3Dus-ascii"><meta name=3DGenerator content=3D"Micros=
oft Word 14 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:purple;
text-decoration:underline;}
span.EmailStyle17
{mso-style-type:personal-compose;
font-family:"Calibri","sans-serif";
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;
font-family:"Calibri","sans-serif";}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]--></head><body lang=3DEN-US link=3Dblue vli=
nk=3Dpurple><div class=3DWordSection1><p class=3DMsoNormal>Hi,<o:p></o:p></=
p><p class=3DMsoNormal><o:p> </o:p></p><p class=3DMsoNormal> &nbs=
p; Valgrind 3.8.1 shows a memory leak in unixODBC 2.3.2 after s=
etting SQL_ATTR_ODBC_CURSORS attribute to SQL_CUR_USE_ODBC and then connect=
ing to a data source.<o:p></o:p></p><p class=3DMsoNormal><o:p> </o:p><=
/p><p class=3DMsoNormal>Testcase snippet:<o:p></o:p></p><p class=3DMsoNorma=
l><o:p> </o:p></p><p class=3DMsoNormal>…<o:p></o:p></p><p class=
=3DMsoNormal>SQLULEN attr_cur =3D SQL_CUR_USE_ODBC;<o:p></o:p></p><p class=
=3DMsoNormal>SQLSetConnectAttr (hdbc, SQL_ATTR_ODBC_CURSORS, (SQLPOINTER)(S=
QLLEN)attr_cur, NULL);<o:p></o:p></p><p class=3DMsoNormal>SQLDriverConnect =
(hdbc, NULL, connStrIn, SQL_NTS, connStrOut, BUFFER_LEN, &connStrOutLen=
, SQL_DRIVER_NOPROMPT);<o:p></o:p></p><p class=3DMsoNormal>…<o:p></o:=
p></p><p class=3DMsoNormal><o:p> </o:p></p><p class=3DMsoNormal>/>u=
name -srm<o:p></o:p></p><p class=3DMsoNormal>Linux 2.6.32-358.el6.x86_64 x8=
6_64<o:p></o:p></p><p class=3DMsoNormal>/>cat /etc/redhat-release<o:p></=
o:p></p><p class=3DMsoNormal>Red Hat Enterprise Linux Server release 6.4 (S=
antiago)<o:p></o:p></p><p class=3DMsoNormal>/>g++ -g -I$ODBC/include tes=
tcase_unixodbc_leak.cpp -L$ODBC/lib -lodbc -lpthread<o:p></o:p></p><p class=
=3DMsoNormal>/>valgrind --leak-check=3Dfull --show-reachable=3Dno --show=
-possibly-lost=3Dno --track-origins=3Dyes --num-callers=3D50 --gen-suppress=
ions=3Dall --xml=3Dyes --xml-file=3Dtestcase.valgrind a.out<o:p></o:p></p><=
p class=3DMsoNormal><o:p> </o:p></p><p class=3DMsoNormal>Valgrind leak=
entry:<o:p></o:p></p><p class=3DMsoNormal><o:p> </o:p></p><p class=3D=
MsoNormal><error><o:p></o:p></p><p class=3DMsoNormal> <uniqu=
e>0xc1</unique><o:p></o:p></p><p class=3DMsoNormal> <tid&=
gt;1</tid><o:p></o:p></p><p class=3DMsoNormal> <kind>Leak=
_DefinitelyLost</kind><o:p></o:p></p><p class=3DMsoNormal> <=
xwhat><o:p></o:p></p><p class=3DMsoNormal> <text>=
;5,056 (64 direct, 4,992 indirect) bytes in 1 blocks are definitely lost in=
loss record 167 of 170</text><o:p></o:p></p><p class=3DMsoNormal>&nb=
sp; <leakedbytes>5056</leakedbytes><o:p></o:p></p><=
p class=3DMsoNormal> <leakedblocks>1</leakedbloc=
ks><o:p></o:p></p><p class=3DMsoNormal> </xwhat><o:p></o:p><=
/p><p class=3DMsoNormal> <stack><o:p></o:p></p><p class=3DMsoNo=
rmal> <frame><o:p></o:p></p><p class=3DMsoNormal>&n=
bsp; <ip>0x4A069EE</ip><o:p></o:p></p><=
p class=3DMsoNormal> <obj>/usr/lib64/va=
lgrind/vgpreload_memcheck-amd64-linux.so</obj><o:p></o:p></p><p class=
=3DMsoNormal> <fn>malloc</fn><o:p=
></o:p></p><p class=3DMsoNormal> <dir>/=
builddir/build/BUILD/valgrind-3.8.1/coregrind/m_replacemalloc</dir><o=
:p></o:p></p><p class=3DMsoNormal> <file&g=
t;vg_replace_malloc.c</file><o:p></o:p></p><p class=3DMsoNormal> =
; <line>270</line><o:p></o:p></p><p cla=
ss=3DMsoNormal> </frame><o:p></o:p></p><p class=3DM=
soNormal> <frame><o:p></o:p></p><p class=3DMsoNorma=
l> <ip>0x127A65E5</ip><o:p></o:p>=
</p><p class=3DMsoNormal> </frame><o:p></o:p></p><p=
class=3DMsoNormal> <frame><o:p></o:p></p><p class=
=3DMsoNormal> <ip>0x4C206BD</ip><=
o:p></o:p></p><p class=3DMsoNormal> <obj&g=
t;/amd/packages/mdx/redhat/databases/unixodbc/x86_64-gcc4.1.2/lib/libodbc.s=
o.1.0.0</obj><o:p></o:p></p><p class=3DMsoNormal> &n=
bsp; <fn>__connect_part_two</fn><o:p></o:p></p><p class=
=3DMsoNormal> </frame><o:p></o:p></p><p class=3DMso=
Normal> <frame><o:p></o:p></p><p class=3DMsoNormal>=
<ip>0x4C28F74</ip><o:p></o:p></p=
><p class=3DMsoNormal> <obj>/amd/packag=
es/mdx/redhat/databases/unixodbc/x86_64-gcc4.1.2/lib/libodbc.so.1.0.0</o=
bj><o:p></o:p></p><p class=3DMsoNormal> &l=
t;fn>SQLDriverConnect</fn><o:p></o:p></p><p class=3DMsoNormal>&nbs=
p; </frame><o:p></o:p></p><p class=3DMsoNormal> &nbs=
p; <frame><o:p></o:p></p><p class=3DMsoNormal>  =
; <ip>0x400F70</ip><o:p></o:p></p><p class=3DMsoNor=
mal> <obj>/amd/tmp/scottz/a.out</obj=
><o:p></o:p></p><p class=3DMsoNormal> <=
fn>main</fn><o:p></o:p></p><p class=3DMsoNormal> =
<dir>/nfs/tmp/scottz</dir><o:p></o:p></p><p class=
=3DMsoNormal> <file>testcase_unixodbc_l=
eak.cpp</file><o:p></o:p></p><p class=3DMsoNormal> =
<line>208</line><o:p></o:p></p><p class=3DMsoNormal=
> </frame><o:p></o:p></p><p class=3DMsoNormal> =
; </stack><o:p></o:p></p><p class=3DMsoNormal> <suppression&=
gt;<o:p></o:p></p><p class=3DMsoNormal> <sname>inse=
rt_a_suppression_name_here</sname><o:p></o:p></p><p class=3DMsoNormal=
> <skind>Memcheck:Leak</skind><o:p></o:p></p>=
<p class=3DMsoNormal> <sframe> <fun>malloc<=
;/fun> </sframe><o:p></o:p></p><p class=3DMsoNormal> &n=
bsp; <sframe> <obj>*</obj> </sframe><o:p></o:p></p>=
<p class=3DMsoNormal> <sframe> <fun>__connect=
_part_two</fun> </sframe><o:p></o:p></p><p class=3DMsoNormal>&n=
bsp; <sframe> <fun>SQLDriverConnect</fun> <=
;/sframe><o:p></o:p></p><p class=3DMsoNormal> <sfra=
me> <fun>main</fun> </sframe><o:p></o:p></p><p class=
=3DMsoNormal> <rawtext><o:p></o:p></p><p class=3DMs=
oNormal><![CDATA[<o:p></o:p></p><p class=3DMsoNormal>{<o:p></o:p></p><p =
class=3DMsoNormal> <insert_a_suppression_name_here><o:p><=
/o:p></p><p class=3DMsoNormal> Memcheck:Leak<o:p></o:p></p><p c=
lass=3DMsoNormal> fun:malloc<o:p></o:p></p><p class=3DMsoNormal=
> obj:*<o:p></o:p></p><p class=3DMsoNormal> fun:__c=
onnect_part_two<o:p></o:p></p><p class=3DMsoNormal> fun:SQLDriv=
erConnect<o:p></o:p></p><p class=3DMsoNormal> fun:main<o:p></o:=
p></p><p class=3DMsoNormal>}<o:p></o:p></p><p class=3DMsoNormal>]]><o:p>=
</o:p></p><p class=3DMsoNormal> </rawtext><o:p></o:=
p></p><p class=3DMsoNormal> </suppression><o:p></o:p></p><p cla=
ss=3DMsoNormal></error><o:p></o:p></p><p class=3DMsoNormal><o:p> =
;</o:p></p><p class=3DMsoNormal>Regards,<o:p></o:p></p><p class=3DMsoNormal=
>Scott Z.<o:p></o:p></p></div></body></html>=
--_000_53D52D02E87FA04A948D9A74A7AE617C1543B26014EagleBlueRogu_--
--===============0305119074==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
_______________________________________________
unixODBC-dev mailing list
[email protected]
http://mailman.unixodbc.org/mailman/listinfo/unixodbc-dev
--===============0305119074==--