Closed Bug 50731 Opened 24 years ago Closed 24 years ago

Cartman hangs when a request for encryption is made

Categories

(Core Graveyard :: Security: UI, defect, P3)

1.0 Branch
x86
Windows NT
defect

Tracking

(Not tracked)

VERIFIED WORKSFORME

People

(Reporter: morse, Assigned: ddrinan0264)

References

Details

(Whiteboard: nsbeta3)

The following scenario will hang cartman:

1. Create a new profile and bring up the browser
2. Go to http://people.netscape.com/morse/password.htm
3. Fill in any arbitrary username and password, then submit form
4. Answer "yes" to the "do you want to save" dialog
5. Dismiss the encryption-disclaimer dialog
6. Dismiss the security-alert dialog
7. From the menu select tasks->privacy->password-manager->encrypt

I obtained the following stacktrace at the point of hang:

NTDLL! 77f678ff()
WS2_32! 776b84ee()
WSOCK32! 776d1173()
_PR_MD_RECV(PRFileDesc * 0x020afda0, void * 0x0012d428, int 8, int 0, unsigned 
int 4294967295) line 175 + 19 bytes
SocketRecv(PRFileDesc * 0x020afda0, void * 0x0012d428, int 8, int 0, unsigned 
int 4294967295) line 558 + 25 bytes
PR_Recv(PRFileDesc * 0x020afda0, void * 0x0012d428, int 8, int 0, unsigned int 
4294967295) line 193 + 28 bytes
nsPSMShimReceive(void * 0x03851030, void * 0x0012d428, unsigned int 8) line 222 
+ 29 bytes
CMT_ReadThisMany(_CMT_CONTROL * 0x03857c10, void * 0x03851030, void * 
0x0012d428, unsigned long 8) line 401 + 24 bytes
CMT_ReceiveMessage(_CMT_CONTROL * 0x03857c10, CMTItemStr * 0x0012d474) line 363 
+ 21 bytes
CMT_ReadMessageDispatchEvents(_CMT_CONTROL * 0x03857c10, CMTItemStr * 
0x0012d474) line 261 + 13 bytes
CMT_SendMessage(_CMT_CONTROL * 0x03857c10, CMTItemStr * 0x0012d474) line 312 + 
13 bytes
CMT_Hello(_CMT_CONTROL * 0x03857c10, unsigned long 81, char * 0x0012dd84, char * 
0x03854ee8) line 408 + 13 bytes
nsPSMComponent::GetControlConnection(nsPSMComponent * const 0x038c5500, 
_CMT_CONTROL * * 0x0012ddfc) line 558 + 34 bytes
nsSecretDecoderRing::Logout(nsSecretDecoderRing * const 0x0384ed20) line 230 + 
22 bytes
wallet_ReencryptAll(const char * 0x0387c880, void * 0x02fe7be4) line 2962 + 17 
bytes
pref_DoCallback(const char * 0x0387c880) line 2227 + 17 bytes
pref_HashPref(const char * 0x0387c880, PrefValue {...}, int 128, int 1) line 
1797 + 9 bytes
PREF_SetBoolPref(const char * 0x0387c880, int 1) line 741 + 20 bytes
nsPref::SetBoolPref(nsPref * const 0x01ac5c70, const char * 0x0387c880, int 1) 
line 771 + 13 bytes
XPTC_InvokeByIndex(nsISupports * 0x01ac5c70, unsigned int 18, unsigned int 2, 
nsXPTCVariant * 0x0012e0d4) line 139
nsXPCWrappedNativeClass::CallWrappedMethod(JSContext * 0x0257d170, 
nsXPCWrappedNative * 0x020bcb50, const XPCNativeMemberDescriptor * 0x00d8deac, 
nsXPCWrappedNativeClass::CallMode CALL_METHOD, unsigned int 2, long * 
0x03384dd8, long * 0x0012e284) line 915 + 43 bytes
WrappedNative_CallMethod(JSContext * 0x0257d170, JSObject * 0x00d67b08, unsigned 
int 2, long * 0x03384dd8, long * 0x0012e284) line 226 + 34 bytes
js_Invoke(JSContext * 0x0257d170, unsigned int 2, unsigned int 0) line 716 + 23 
bytes
js_Interpret(JSContext * 0x0257d170, long * 0x0012ebc0) line 2517 + 15 bytes
js_Invoke(JSContext * 0x0257d170, unsigned int 1, unsigned int 2) line 732 + 13 
bytes
js_InternalInvoke(JSContext * 0x0257d170, JSObject * 0x027ff650, long 41940664, 
unsigned int 0, unsigned int 1, long * 0x0012ed54, long * 0x0012ece4) line 805 + 
19 bytes
JS_CallFunctionValue(JSContext * 0x0257d170, JSObject * 0x027ff650, long 
41940664, unsigned int 1, long * 0x0012ed54, long * 0x0012ece4) line 3147 + 31 
bytes
nsJSContext::CallEventHandler(nsJSContext * const 0x0257ad10, void * 0x027ff650, 
void * 0x027ff6b8, unsigned int 1, void * 0x0012ed54, int * 0x0012ed50, int 0) 
line 861 + 33 bytes
nsJSEventListener::HandleEvent(nsIDOMEvent * 0x03894424) line 154 + 64 bytes
nsEventListenerManager::HandleEventSubType(nsListenerStruct * 0x02f501e0, 
nsIDOMEvent * 0x03894424, nsIDOMEventTarget * 0x02e5a480, unsigned int 8, 
unsigned int 7) line 788 + 19 bytes
nsEventListenerManager::HandleEvent(nsIPresContext * 0x024e9ad0, nsEvent * 
0x0012f3fc, nsIDOMEvent * * 0x0012f394, nsIDOMEventTarget * 0x02e5a480, unsigned 
int 7, nsEventStatus * 0x0012f444) line 1666 + 39 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x02e5a470, nsIPresContext * 
0x024e9ad0, nsEvent * 0x0012f3fc, nsIDOMEvent * * 0x0012f394, unsigned int 1, 
nsEventStatus * 0x0012f444) line 3321
PresShell::HandleDOMEventWithTarget(PresShell * const 0x0250c480, nsIContent * 
0x02e5a470, nsEvent * 0x0012f3fc, nsEventStatus * 0x0012f444) line 4080 + 39 
bytes
nsMenuFrame::Execute() line 1495
nsMenuFrame::HandleEvent(nsMenuFrame * const 0x0337731c, nsIPresContext * 
0x024e9ad0, nsGUIEvent * 0x0012f894, nsEventStatus * 0x0012f784) line 378
PresShell::HandleEventInternal(nsEvent * 0x0012f894, nsIView * 0x038968a0, 
nsEventStatus * 0x0012f784) line 4048 + 38 bytes
PresShell::HandleEvent(PresShell * const 0x0250c484, nsIView * 0x038968a0, 
nsGUIEvent * 0x0012f894, nsEventStatus * 0x0012f784, int 0, int & 1) line 3968 + 
23 bytes
nsView::HandleEvent(nsView * const 0x038968a0, nsGUIEvent * 0x0012f894, unsigned 
int 8, nsEventStatus * 0x0012f784, int 0, int & 1) line 374
nsView::HandleEvent(nsView * const 0x0388cf60, nsGUIEvent * 0x0012f894, unsigned 
int 8, nsEventStatus * 0x0012f784, int 0, int & 1) line 346
nsView::HandleEvent(nsView * const 0x038573a0, nsGUIEvent * 0x0012f894, unsigned 
int 8, nsEventStatus * 0x0012f784, int 0, int & 1) line 346
nsView::HandleEvent(nsView * const 0x024e88f0, nsGUIEvent * 0x0012f894, unsigned 
int 28, nsEventStatus * 0x0012f784, int 1, int & 1) line 346
nsViewManager2::DispatchEvent(nsViewManager2 * const 0x024e8ad0, nsGUIEvent * 
0x0012f894, nsEventStatus * 0x0012f784) line 1429
HandleEvent(nsGUIEvent * 0x0012f894) line 68
nsWindow::DispatchEvent(nsWindow * const 0x0388ce24, nsGUIEvent * 0x0012f894, 
nsEventStatus & nsEventStatus_eIgnore) line 614 + 10 bytes
nsWindow::DispatchWindowEvent(nsGUIEvent * 0x0012f894) line 635
nsWindow::DispatchMouseEvent(unsigned int 301, nsPoint * 0x00000000) line 3810 + 
21 bytes
ChildWindow::DispatchMouseEvent(unsigned int 301, nsPoint * 0x00000000) line 
4020
nsWindow::ProcessMessage(unsigned int 514, unsigned int 0, long 4259869, long * 
0x0012fc10) line 2888 + 24 bytes
nsWindow::WindowProc(HWND__ * 0x00630692, unsigned int 514, unsigned int 0, long 
4259869) line 883 + 27 bytes
USER32! 77e71268()
MOZILLA! 0041001d()
Whiteboard: nsbeta3
Blocks: 44299
The hang is actuall in the following loop inside of CMT_ReadThisMany which is in 
the file nsprpub/pr/src/io/prsocket.c.  It appears that sockFuncs.recv is always 
returning a value of 0.

  while (total < thisMany) {
    int got;
    got = control->sockFuncs.recv(sock, (void*)((char*)buffer + total),
                                     thisMany-total);
    if (got < 0 ) {
      break;
    } 
    total += got;
  } 
Correction: The loop above is in the file security/psm/lib/client/cmtutils.c.
That's interesting -- I rebooted my machine and this bug went away.  Somehow my 
winsock got hung and so it wasn't returning any characters.  Possibly from some 
previous debugging when I inadvertently exited in the middle of some winsock 
operations.

Anyhow, closing this out.
Status: NEW → RESOLVED
Closed: 24 years ago
Resolution: --- → WORKSFORME
Verified. Worksforme too.
Status: RESOLVED → VERIFIED
Mass changing Security:Crypto to PSM
Component: Security: Crypto → Client Library
Product: Browser → PSM
Version: other → 2.1
Mass changing Security:Crypto to PSM
Product: PSM → Core
Version: psm2.1 → 1.0 Branch
Product: Core → Core Graveyard
You need to log in before you can comment on or make changes to this bug.