Hi,

Matt, looks like your last commit fixed the memory leak from PR#3572. I've
tested with valgrind with the test application and no more leaks reported.
Thanks!

Regards,
Dmitry

On Wed, Nov 26, 2014 at 5:20 AM, Praveen Kariyanahalli <prav...@viptela.com>
wrote:

> Hi Matt
>
> Trying out your patch. Will keep you posted. In meanwhile we ran into more
> valgrind issues .. on the server end. Can you please comment on them?
>
> ==621== 8,680 (1,488 direct, 7,192 indirect) bytes in 62 blocks are
> definitely lost in loss record 899 of 952
> ==621==    at 0x4A05F80: malloc (vg_replace_malloc.c:296)
>
> ==621==    by 0x5BFCC86: default_malloc_ex (mem.c:79)
>
> ==621==    by 0x5BFD315: CRYPTO_malloc (mem.c:308)
>
> ==621==    by 0x5D2414D: pitem_new (pqueue.c:73)
>
> ==621==    by 0x5958F74: dtls1_buffer_message (d1_both.c:1233)
>
> ==621==    by 0x594E3B2: dtls1_send_server_done (d1_srvr.c:1032)
>
> ==621==    by 0x594D696: dtls1_accept (d1_srvr.c:564)
>
> ==621==    by 0x595C555: SSL_accept (ssl_lib.c:940)
>
> ==621==    by 0x59539F7: dtls1_listen (d1_lib.c:491)
>
> ==621==    by 0x59533BF: dtls1_ctrl (d1_lib.c:267)
>
> ==621==    by 0x595CAF2: SSL_ctrl (ssl_lib.c:1106)
>
> ==621==    by 0x416229: server_ssl_event_cb (server.c:3823)
>
> ==621==
>
> ==621== 67,766 (1,488 direct, 66,278 indirect) bytes in 62 blocks are
> definitely lost in loss record 933 of 952
> ==621==    at 0x4A05F80: malloc (vg_replace_malloc.c:296)
>
> ==621==    by 0x5BFCC86: default_malloc_ex (mem.c:79)
>
> ==621==    by 0x5BFD315: CRYPTO_malloc (mem.c:308)
>
> ==621==    by 0x5D2414D: pitem_new (pqueue.c:73)
>
> ==621==    by 0x5958F74: dtls1_buffer_message (d1_both.c:1233)
>
> ==621==    by 0x594FAD4: dtls1_send_server_certificate (d1_srvr.c:1612)
>
> ==621==    by 0x594D367: dtls1_accept (d1_srvr.c:426)
>
> ==621==    by 0x595C555: SSL_accept (ssl_lib.c:940)
>
> ==621==    by 0x59539F7: dtls1_listen (d1_lib.c:491)
>
> ==621==    by 0x59533BF: dtls1_ctrl (d1_lib.c:267)
>
> ==621==    by 0x595CAF2: SSL_ctrl (ssl_lib.c:1106)
>
> ==621==    by 0x416229:server_ssl_event_cb (server.c:3823)
> ==621==
>
> ==621== LEAK SUMMARY:
>
> ==621==    definitely lost: 2,976 bytes in 124 blocks
>
> ==621==    indirectly lost: 73,470 bytes in 248 blocks
>
> ==621==      possibly lost: 288 bytes in 1 blocks
>
>
> Thanks
> -Praveen
>
>
>
> On Tue, Nov 25, 2014 at 6:28 AM, Matt Caswell via RT <r...@openssl.org>
> wrote:
>
>> On Mon Nov 24 21:52:04 2014, prav...@viptela.com wrote:
>> > * state = 4384,*
>>
>> This is SSL3_ST_CR_SRVR_HELLO_A, i.e. we are trying to read a
>> ServerHello. This
>> confirms what we expected.
>>
>>
>> > > So if s->init_num is 0 then frag_len is 0 and frag->fragment gets
>> > set to
>> > > NULL.
>>
>> What I missed in the above is that there are some OPENSSL_assert calls in
>> dtls_buffer_message that check init_num, so it cannot be 0. Something
>> else is
>> happening.
>>
>>
>> > *Agreed. All good points. Just another data point, is that we ran
>> > valgrind
>> > on another node, saw a leak in this related code. See if this helps
>> > you.*
>> >
>> > *==697== HEAP SUMMARY:
>> > ==697== in use at exit: 1,282,108 bytes in 20,788 blocks
>> > ==697== total heap usage: 664,349 allocs, 643,561 frees, 105,419,006
>> > bytes allocated
>> > ==697==
>> > ==697== 120 bytes in 1 blocks are definitely lost in loss record 27 of
>> > 96
>> > ==697== at 0x4A05F80: malloc (vg_replace_malloc.c:296)
>> > ==697== by 0x5BFBC86: default_malloc_ex (mem.c:79)
>> > ==697== by 0x5BFC315: CRYPTO_malloc (mem.c:308)
>> > ==697== by 0x5955875: dtls1_hm_fragment_new (d1_both.c:199)
>> > ==697== by 0x5956817: dtls1_reassemble_fragment (d1_both.c:625)
>> > ==697== by 0x595720A: dtls1_get_message_fragment (d1_both.c:852)
>> > ==697== by 0x5956174: dtls1_get_message (d1_both.c:443)
>> > ==697== by 0x59504DA: dtls1_get_hello_verify (d1_clnt.c:918)
>> > ==697== by 0x594F5AB: dtls1_connect (d1_clnt.c:360)
>> > ==697== by 0x595B591: SSL_connect (ssl_lib.c:949)
>> > ==697== by 0x430409: ssl_connect_timer_cb (vdaemon_peer.c:303)
>> > ==697== by 0x48573E: timer_exec_pri (timer.c:612)
>> > ==697==
>> > ==697== LEAK SUMMARY:
>> > ==697== definitely lost: 120 bytes in 1 blocks
>> > ==697== indirectly lost: 0 bytes in 0 blocks
>> > ==697== possibly lost: 0 bytes in 0 blocks
>> > ==697== still reachable: 1,281,988 bytes in 20,787 blocks
>> > ==697== suppressed: 0 bytes in 0 blocks
>> > ==697== Reachable blocks (those to which a pointer was found) are not
>> > shown.
>> > ==697== To see them, rerun with: --leak-check=full
>> > --show-leak-kinds=all
>> > ==697==
>> > ==697== For counts of detected and suppressed errors, rerun with: -v
>> > ==697== Use --track-origins=yes to see where uninitialised values come
>> > from *
>> >
>> > *==697== ERROR SUMMARY: 126394 errors from 117 contexts (suppressed: 1
>> > from
>> > 1)*
>> >
>>
>> That's very interesting. I've tracked that down to a problem in
>> dtls1_clear_queues which is failing to correct free bufferred fragments.
>> I've
>> attached a patch. Please let me know if you have any problems with it.
>> Unfortunately I think this is unconnected to your main problem.
>>
>> >
>> >
>> > > If I sent you some instrumented code would you be able to apply it
>> > and see
>> > > if
>> > > that helps us narrow down what's going on?
>> > >
>> >
>> > *[viptela.com <http://viptela.com>] *
>> >
>> > *Ofcourse. But as I mentioned earlier, we dont know the likelyhood of
>> > this
>> > happening again. Please send me any instrumented patch. We will keep
>> > trying.*
>>
>> Ok, thanks. I've attached a second patch which adds a number of
>> OPENSSL_assert
>> calls at various points to check that frag->fragment is not null. I'm
>> hoping it
>> will help us track down why its not being correctly set. If you get
>> another
>> crash with this patch applied, then please capture the core and let me
>> know
>> what you find out.
>>
>> Thanks
>>
>> Matt
>>
>>
>
>
> --
>
> Regards
> -Praveen
>



-- 
---
Dmitry Sobinov
AddLive.com
Live video and voice for your application

______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       openssl-dev@openssl.org
Automated List Manager                           majord...@openssl.org

Reply via email to