r24630 caused any change to the address bar (whether manual or automatically on startup) in Safari 3.0.2 Beta on Windows to hit the ASSERT_NOT_REACHED in DOMHTMLInputElement::name. <http://trac.webkit.org/projects/webkit/changeset/24630> <http://trac.webkit.org/projects/webkit/browser/trunk/WebKit/win/DOMHTMLClasses.cpp?rev=24630#L1023>
WebKit_debug.dll!DOMHTMLInputElement::name(wchar_t * * __formal=0x0012d394) Line 1023 + 0x19 bytes C++ Safari.exe!004c1ebd() [Frames below may be incorrect and/or missing, no symbols loaded for Safari.exe] Safari.exe!004baf63() Safari.exe!004bab5f() Safari.exe!004048f8() user32.dll!7e418724() user32.dll!7e418806() user32.dll!7e41b88b() user32.dll!7e41b8f3() Safari.exe!004c1c4b() > WebKit_debug.dll!WebEditorClient::textDidChangeInTextField(WebCore::Element * e=0x016f3b60) Line 342 + 0x2d bytes C++ WebKit_debug.dll!WebCore::Frame::textDidChangeInTextField(WebCore::Element * e=0x016f3b60) Line 1014 + 0x31 bytes C++ WebKit_debug.dll!WebCore::RenderTextControl::subtreeHasChanged() Line 530 C++ WebKit_debug.dll!WebCore::HTMLTextFieldInnerTextElement::defaultEventHandler(WebCore::Event * evt=0x016f7e10) Line 67 C++ WebKit_debug.dll!WebCore::EventTargetNode::dispatchGenericEvent(WTF::PassRefPtr<WebCore::Event> e={...}, int & __formal=-858993460, bool tempEvent=true) Line 269 + 0x38 bytes C++ WebKit_debug.dll!WebCore::EventTargetNode::dispatchEvent(WTF::PassRefPtr<WebCore::Event> e={...}, int & ec=-858993460, bool tempEvent=true, WebCore::EventTarget * target=0x016f52f4) Line 308 + 0x1a bytes C++ WebKit_debug.dll!WebCore::EventTargetNode::dispatchEvent(WTF::PassRefPtr<WebCore::Event> e={...}, int & ec=-858993460, bool tempEvent=true) Line 292 + 0x43 bytes C++ WebKit_debug.dll!WebCore::dispatchEditableContentChangedEvents(const WebCore::EditCommand & command={...}) Line 771 C++ WebKit_debug.dll!WebCore::Editor::appliedEditing(WTF::PassRefPtr<WebCore::EditCommand> cmd={...}) Line 777 + 0xe bytes C++ WebKit_debug.dll!WebCore::EditCommand::apply() Line 102 C++ WebKit_debug.dll!WebCore::applyCommand(WTF::PassRefPtr<WebCore::EditCommand> command={...}) Line 227 C++ WebKit_debug.dll!WebCore::TypingCommand::insertText(WebCore::Document * document=0x016ee5f0, const WebCore::String & text={...}, const WebCore::Selection & selectionForInsertion={...}, bool selectInsertedText=false) Line 151 + 0x14 bytes C++ WebKit_debug.dll!WebCore::Editor::insertTextWithoutSendingTextEvent(const WebCore::String & text={...}, bool selectInsertedText=false, WebCore::Event * triggeringEvent=0x016f5588) Line 1426 + 0x20 bytes C++ WebKit_debug.dll!WebCore::EventHandler::defaultTextInputEventHandler(WebCore::TextEvent * event=0x016f5588) Line 1694 + 0x1b bytes C++ WebKit_debug.dll!WebCore::EventTargetNode::defaultEventHandler(WebCore::Event * event=0x016f5588) Line 606 C++ WebKit_debug.dll!WebCore::HTMLInputElement::defaultEventHandler(WebCore::Event * evt=0x016f5588) Line 1140 C++ WebKit_debug.dll!WebCore::EventTargetNode::dispatchGenericEvent(WTF::PassRefPtr<WebCore::Event> e={...}, int & __formal=-858993460, bool tempEvent=true) Line 267 + 0x38 bytes C++ WebKit_debug.dll!WebCore::EventTargetNode::dispatchEvent(WTF::PassRefPtr<WebCore::Event> e={...}, int & ec=-858993460, bool tempEvent=true, WebCore::EventTarget * target=0x016f3b8c) Line 308 + 0x1a bytes C++ WebKit_debug.dll!WebCore::EventTargetNode::dispatchEvent(WTF::PassRefPtr<WebCore::Event> e={...}, int & ec=-858993460, bool tempEvent=true) Line 292 + 0x43 bytes C++ WebKit_debug.dll!WebCore::EventHandler::handleTextInputEvent(const WebCore::String & text={...}, WebCore::Event * underlyingEvent=0x016f6040, bool isLineBreak=false, bool isBackTab=false) Line 1654 + 0x2b bytes C++ WebKit_debug.dll!WebCore::Editor::insertText(const WebCore::String & text={...}, WebCore::Event * triggeringEvent=0x016f6040) Line 1392 C++ WebKit_debug.dll!WebView::handleEditingKeyboardEvent(WebCore::KeyboardEvent * evt=0x016f6040) Line 983 + 0x27 bytes C++ WebKit_debug.dll!WebEditorClient::handleKeypress(WebCore::KeyboardEvent * evt=0x016f6040) Line 596 + 0xf bytes C++ WebKit_debug.dll!WebCore::Editor::handleKeypress(WebCore::KeyboardEvent * event=0x016f6040) Line 114 + 0x13 bytes C++ WebKit_debug.dll!WebCore::EventHandler::defaultKeyboardEventHandler(WebCore::KeyboardEvent * event=0x016f6040) Line 1446 C++ WebKit_debug.dll!WebCore::EventTargetNode::defaultEventHandler(WebCore::Event * event=0x016f6040) Line 594 C++ WebKit_debug.dll!WebCore::HTMLInputElement::defaultEventHandler(WebCore::Event * evt=0x016f6040) Line 1140 C++ WebKit_debug.dll!WebCore::EventTargetNode::dispatchGenericEvent(WTF::PassRefPtr<WebCore::Event> e={...}, int & __formal=-858993460, bool tempEvent=true) Line 267 + 0x38 bytes C++ WebKit_debug.dll!WebCore::EventTargetNode::dispatchEvent(WTF::PassRefPtr<WebCore::Event> e={...}, int & ec=-858993460, bool tempEvent=true, WebCore::EventTarget * target=0x016f3b8c) Line 308 + 0x1a bytes C++ WebKit_debug.dll!WebCore::EventTargetNode::dispatchEvent(WTF::PassRefPtr<WebCore::Event> e={...}, int & ec=-858993460, bool tempEvent=true) Line 292 + 0x43 bytes C++ WebKit_debug.dll!WebCore::EventHandler::keyEvent(const WebCore::PlatformKeyboardEvent & initialKeyEvent={...}) Line 1439 C++ WebKit_debug.dll!WebView::keyDown(unsigned int virtualKeyCode=65, long keyData=1966081) Line 1010 + 0x13 bytes C++ WebKit_debug.dll!WebViewWndProc(HWND__ * hWnd=0x0020038e, unsigned int message=256, unsigned int wParam=65, long lParam=1966081) Line 1193 + 0x10 bytes C++ user32.dll!7e418724() user32.dll!7e418806() user32.dll!7e41c623() user32.dll!7e41c649() comctl32.dll!773e1b57() comctl32.dll!773e1eaa() comctl32.dll!773e206c() comctl32.dll!7744e0c2() comctl32.dll!773e1eaa() comctl32.dll!773e20cf() user32.dll!7e418724() user32.dll!7e418806() user32.dll!7e4189bd() user32.dll!7e418a00() Safari.exe!0047ea4b() Safari.exe!0047b61b() Safari.exe!0047bc65() Safari.exe!004c7695() kernel32.dll!7c816ff7()
Created attachment 15697 [details] user.dmp
Just to clarify - if you have your home page set to load on startup, you'll hit this assert when starting up. If you have the "New windows open with.." behavior set to "Empty page", Safari will start normally (allowing you to attach a debugger) but as soon as you type anything into the address bar, you hit the assert.
The problem was caused by this change in r24630: -interface IDOMHTMLInputElement : IDOMElement +interface IDOMHTMLInputElement : IDOMHTMLElement This changed the vtable for IDOMHTMLInputElement, causing Safari to call IDOMHTMLInputElement::name when it meant to be calling IDOMHTMLInputElement::value
I'm working on a fix for this.
Fixed in r24672
*** Bug 14785 has been marked as a duplicate of this bug. ***