Closed Bug 120144 Opened 23 years ago Closed 23 years ago

cancelling SSL connection to unreachable server causes browser hang

Categories

(Core :: Networking: HTTP, defect)

x86
Linux
defect
Not set
critical

Tracking

()

VERIFIED DUPLICATE of bug 106188

People

(Reporter: blizzard, Assigned: darin.moz)

References

Details

Build is from the morning of Jan 15th, 2002 off the tip.

If I try to connect to an unreachable server using https, and use the cancel
button in the browser to stop the connection, the browser will hang.

Steps to reproduce:

1. Load a web site like https://198.198.198.198 which should be unreachable.
2. While the browser is connecting, hit Cancel

The browser should be hung at this point.  Once the connection times out ( 60
seconds or so ) the browser will come back.

I've debugged this somewhat.  It looks like the UI thread is stuck getting the
lock in nsSocketTrasnport:

#1  0x402051c9 in __pthread_wait_for_restart_signal (self=0x4020df40)
    at pthread.c:969
#2  0x40206f09 in __pthread_alt_lock (lock=0x851c37c, self=0x0) at restart.h:34
#3  0x40203d16 in __pthread_mutex_lock (mutex=0x851c36c) at mutex.c:120
#4  0x401de14d in PR_Lock (lock=0x851c36c) at ptsynch.c:183
#5  0x401de6ca in PR_EnterMonitor (mon=0x851c368) at ptsynch.c:507
#6  0x408595b7 in nsSocketTransport::Dispatch (this=0x851c260, req=0x851c408)
    at ../../../dist/include/xpcom/nsAutoLock.h:200
#7  0x4085ba73 in nsSocketRequest::Cancel (this=0x851c408, status=2152398850)
    at nsSocketTransport.cpp:2637
#8  0x4088955f in nsHttpConnection::OnTransactionComplete (this=0x84e48d8, 
    trans=0x84e47c8, status=2152398850) at nsHttpConnection.cpp:268
#9  0x40883d5f in nsHttpHandler::CancelTransaction (this=0x8147ca0, 
    trans=0x84e47c8, status=2152398850) at nsHttpHandler.cpp:515
#10 0x4088c06a in nsHttpTransaction::Cancel (this=0x84e47c8, status=2152398850)
    at nsHttpHandler.h:78
#11 0x408924a5 in nsHttpChannel::Cancel (this=0x82a3938, status=2152398850)
    at nsHttpChannel.cpp:1758
#12 0x4084ddcd in nsLoadGroup::Cancel (this=0x878cbf0, status=2152398850)
    at nsLoadGroup.cpp:248
#13 0x40dc883b in nsDocLoaderImpl::Stop (this=0x878cb48)
    at ../../dist/include/xpcom/nsCOMPtr.h:650

while NSS is waiting to connect, also while in the socket transport code:

#0  0x4059ee17 in __poll (fds=0x40bb949c, nfds=1, timeout=5000)
    at ../sysdeps/unix/sysv/linux/poll.c:63
#1  0x401def9e in pt_poll_now (op=0x40bb94fc) at ptio.c:570
#2  0x401df1eb in pt_Continue (op=0x40bb94fc) at ptio.c:684
#3  0x401dff38 in pt_Connect (fd=0x437c7ed0, addr=0x40bb95cc, 
    timeout=4294967295) at ptio.c:1482
#4  0x401ce701 in Ipv6ToIpv4SocketConnect (fd=0x4222fa28, addr=0x851c29c, 
    timeout=4294967295) at pripv6.c:135
#5  0x435206ab in ssl_SecureConnect () at nsUnicharUtils.cpp:275
#6  0x43522527 in ssl_Connect () at nsUnicharUtils.cpp:275
#7  0x434e85e6 in nsSSLIOLayerConnect (fd=0x889e808, addr=0x851c29c, 
    timeout=20) at nsNSSIOLayer.cpp:526
#8  0x401cdfb1 in PR_Connect (fd=0x889e808, addr=0x851c29c, timeout=20)
    at priometh.c:182
#9  0x4085847d in nsSocketTransport::doConnection (this=0x851c260, 
    aSelectFlags=0) at nsSocketTransport.cpp:835
#10 0x40857b8a in nsSocketTransport::Process (this=0x851c260, aSelectFlags=0)
    at nsSocketTransport.cpp:505
#11 0x4085c4b6 in nsSocketTransportService::ProcessWorkQ (this=0x8110af0)
    at nsSocketTransportService.cpp:297
#12 0x4085c8d9 in nsSocketTransportService::Run (this=0x8110af0)
    at nsSocketTransportService.cpp:543
#13 0x4016a7cb in nsThread::Main (arg=0x8103728)
    at ../../dist/include/xpcom/nsCOMPtr.h:650

Something bad is happening here.  Either that code shouldn't be holding the
socket transport lock or else the connect should be non-blocking and should also
return immediately.
Blocks: 115520

*** This bug has been marked as a duplicate of 106188 ***
Status: NEW → RESOLVED
Closed: 23 years ago
Resolution: --- → DUPLICATE
Verified dupe.
Status: RESOLVED → VERIFIED
QA Contact: tever → junruh
You need to log in before you can comment on or make changes to this bug.