This happens when the server is unreachable. The client when it is trying
to resend the client_hello is barfing on fragment->frag value. Is this
known issue ? Let me know if you need any more info.

Not consistently reproducible. Please let us know if I can work around this
issue.


# debug -a mips64 info.core.my_client.1626.pm1012.1416137224
[New LWP 1626]
[New LWP 1745]
Core was generated by `/usr/sbin/my_client -f'.
Program terminated with signal 11, Segmentation fault.
#0  0xeb851eb85454aaba in ?? ()
#0  0xeb851eb85454aaba in ?? ()
#1  0x000000fff7e35530 in dtls1_retransmit_message (s=0x1206dd750, seq=0,
frag_off=0, found=0xffffdfec60) at d1_both.c:1289
#2  0x000000fff7e34fb8 in dtls1_retransmit_buffered_messages
(s=0x1206dd750) at d1_both.c:1173
#3  0x000000fff7e2e38c in dtls1_handle_timeout (s=0x1206dd750) at
d1_lib.c:464
#4  0x000000fff7e2fbb0 in dtls1_read_bytes (s=0x1206dd750, type=22,
buf=0xffffdfee18
"\377\377\377\377\204~{\210\377\377\377\377\204~{\020\377\377\377\377\204p",
len=12, peek=0) at d1_pkt.c:833
#5  0x000000fff7e33ff8 in dtls1_get_message_fragment (s=0x1206dd750,
st1=4384, stn=4385, max=20000, ok=0xffffdfef84) at d1_both.c:819
#6  0x000000fff7e32c68 in dtls1_get_message (s=0x1206dd750, st1=4384,
stn=4385, mt=-1, max=20000, ok=0xffffdfef84) at d1_both.c:443
#7  0x000000fff7e01c34 in ssl3_get_server_hello (s=0x1206dd750) at
s3_clnt.c:832
#8  0x000000fff7e2a120 in dtls1_connect (s=0x1206dd750) at d1_clnt.c:328
#9  0x000000fff7e3a2d8 in SSL_connect (s=0x1206dd750) at ssl_lib.c:949
#10 0x000000012003d70c in ssl_connect_timer_cb (p_timer=0x120869680,
peer=0x12085fdd0, arg2=0x0, arg3=0x0, arg4=0x0) at my_client_peer.c:330
#11 0x00000001200a46f0 in timer_exec_pri (p_mgr=0x120397810,
p_pri=0x1203a3888, p_starttime=0xffffdff268, msecs=100) at timer.c:612
#12 0x00000001200a40b4 in timer_exec (p_mgr=0x120397810,
pri_mask=TIMER_PRI_MASK_ALL, msecs=100) at timer.c:504
#13 0x0000000120021bf8 in g_base_timer_cb (base_timer_fd=-1, what=1,
g=0x1200e99d0 <g_m_client>) at my_client.c:4412
#14 0x000000fff7ebe06c in event_process_active_single_queue
(base=0x120397270, activeq=0x120397760) at
/usr/src/debug/libevent/2.0.21-r3/libevent-2.0.21-stable/event.c:1350
#15 0x000000fff7ebe3b8 in event_process_active (base=0x120397270) at
/usr/src/debug/libevent/2.0.21-r3/libevent-2.0.21-stable/event.c:1420
#16 0x000000fff7ebeddc in event_base_loop (base=0x120397270, flags=0) at
/usr/src/debug/libevent/2.0.21-r3/libevent-2.0.21-stable/event.c:1621
(gdb) frame 1
#1  0x000000fff7e35530 in dtls1_retransmit_message (s=0x1206dd750, seq=0,
frag_off=0, found=0xffffdfec60) at d1_both.c:1289
1289 memcpy(s->init_buf->data, frag->fragment,
(gdb) p *item
$1 = {priority = "\000\000\000\000\000\000\000", data = 0x1205ce0a0, next =
0x0}
(gdb) p *frag
$2 = {msg_header = {type = 1 '\001', msg_len = 55, seq = 0, frag_off = 0,
frag_len = 55, is_ccs = 0, saved_retransmit_state = {enc_write_ctx = 0x0,
write_hash = 0x0, compress = 0x0,
      session = 0x1206a6730, epoch = 0}}, fragment = 0x0, reassembly = 0x0}
(gdb) #
(gdb) #Note that the fragment is NULL
(gdb) #
(gdb) list
1284 if ( frag->msg_header.is_ccs)
1285 header_length = DTLS1_CCS_HEADER_LENGTH;
1286 else
1287 header_length = DTLS1_HM_HEADER_LENGTH;
1288
1289 memcpy(s->init_buf->data, *frag->fragment*,
1290 frag->msg_header.msg_len + header_length);
1291 s->init_num = frag->msg_header.msg_len + header_length;
1292
1293 dtls1_set_message_header_int(s, frag->msg_header.type,
*(gdb) p/x frag->fragment*
*$3 = 0x0*
(gdb) #
(gdb) #hence the crash
(gdb) #
(gdb)


Thanks in Advance
Praveen Kariyanahalli

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

Reply via email to