Closed Bug 17362 Opened 25 years ago Closed 25 years ago

SIGSEV in viewer while processing a form.

Categories

(Core Graveyard :: Viewer App, defect, P3)

x86
Linux
defect

Tracking

(Not tracked)

VERIFIED DUPLICATE of bug 17431

People

(Reporter: dejong, Assigned: pollmann)

Details

I was runing viewer on a RedHat 5.2 (Intel) Linux system.
I built from the CVS on Wed Oct 27. I then
went to the bugzilla query page and typed my email
address into the Reporter entry box. Finally,
I pressed the button to submit the query. After
doing that viewer crashed with at the following place.


layout/html/forms/src/nsFormFrame.cpp : line 741
nsFormFrame::ProcessAsURLEncoded

736          encoder = nsnull;
737
738       // collect and encode the data from the children controls
739       for (PRUint32 childX = 0; childX < numChildren; childX++) {
740         nsIFormControlFrame* child = (nsIFormControlFrame*)
mFormControls.ElementAt(childX);
741         if (child && child->IsSuccessful(aFrame)) {
742           PRInt32 numValues = 0;
743           PRInt32 maxNumValues = child->GetMaxNumValues();
744           if (0 >= maxNumValues) {
745             continue;


(gdb) print child
$1 = (nsIFormControlFrame *) 0x8351138

(gdb) print aFrame
$2 = (nsIFormControlFrame *) 0x84e14b8

(gdb) call child->IsSuccessful(aFrame)
Cannot access memory at address 0x2c.


The problem seems to be in the inlined method.

From nsListControlFrame.cpp : crash on line 1287.

1283	PRBool
1284	nsListControlFrame::IsSuccessful(nsIFormControlFrame* aSubmitter)
1285	{
1286	  nsAutoString name;
1287	  return (NS_CONTENT_ATTR_HAS_VALUE == GetName(&name));    <--- CRASH
1288	}


It is crashing inside GetName().

From nsListControlFrame.cpp : crash on line 1359.

1354	nsListControlFrame::GetName(nsString* aResult)
1355	{
1356	  nsresult result = NS_FORM_NOTOK;
1357	  if (mContent) {
1358	    nsIHTMLContent* formControl = nsnull;
1359	    result =
mContent->QueryInterface(nsCOMTypeInfo<nsIHTMLContent>::GetIID(),(void**)&formControl);
1360	    if (NS_SUCCEEDED(result) && formControl) {
1361	      nsHTMLValue value;
1362	      result = formControl->GetHTMLAttribute(nsHTMLAtoms::name, value);
1363	      if (NS_CONTENT_ATTR_HAS_VALUE == result) {
1364	        if (eHTMLUnit_String == value.GetUnit()) {
1365	          value.GetStringValue(*aResult);
1366	        }
1367	      }
1368	      NS_RELEASE(formControl);
1369	    }
1370	  }
1371	  return result;
1372	}




Here is the stack trace:

#0  0x40e446e8 in nsFormFrame::ProcessAsURLEncoded (this=0x81f6840,
    aFormProcessor=0x80b0d50, isPost=0, aData=@0xbfffecb0, aFrame=0x84e14b8)
    at ../../../../../layout/html/forms/src/nsFormFrame.cpp:741
#1  0x40e435d5 in nsFormFrame::OnSubmit (this=0x81f6840,
    aPresContext=0x8462f90, aFrame=0x84e1480)
    at ../../../../../layout/html/forms/src/nsFormFrame.cpp:505
#2  0x40e55afd in nsHTMLButtonControlFrame::MouseClicked (this=0x84e1480,
    aPresContext=0x8462f90)
    at ../../../../../layout/html/forms/src/nsHTMLButtonControlFrame.cpp:290
#3  0x40e4864e in nsGfxButtonControlFrame::HandleEvent (this=0x84e1480,
    aPresContext=@0x8462f90, aEvent=0xbfffed90, aEventStatus=@0xbffff1d8)
    at ../../../../../layout/html/forms/src/nsGfxButtonControlFrame.cpp:219
#4  0x40d27cbe in nsEventStateManager::CheckForAndDispatchClick (
    this=0x8212578, aPresContext=@0x8462f90, aEvent=0xbffff2c8,
    aStatus=@0xbffff1d8)
    at ../../../../layout/events/src/nsEventStateManager.cpp:996
#5  0x40d26974 in nsEventStateManager::PostHandleEvent (this=0x8212578,
    aPresContext=@0x8462f90, aEvent=0xbffff2c8, aTargetFrame=0x84e1480,
    aStatus=@0xbffff1d8, aView=0x8356878)
    at ../../../../layout/events/src/nsEventStateManager.cpp:467
#6  0x40d73305 in PresShell::HandleEvent (this=0x846b1a8, aView=0x8356878,
    aEvent=0xbffff2c8, aEventStatus=@0xbffff1d8)
    at ../../../../../layout/html/base/src/nsPresShell.cpp:2214
#7  0x4108d7d7 in nsView::HandleEvent (this=0x8356878, event=0xbffff2c8,
    aEventFlags=8, aStatus=@0xbffff1d8, aHandled=@0xbffff17c)
    at ../../../view/src/nsView.cpp:833
#8  0x4108d769 in nsView::HandleEvent (this=0x821ad10, event=0xbffff2c8,
    aEventFlags=8, aStatus=@0xbffff1d8, aHandled=@0xbffff17c)
    at ../../../view/src/nsView.cpp:817
#9  0x4108d769 in nsView::HandleEvent (this=0x8208498, event=0xbffff2c8,
    aEventFlags=8, aStatus=@0xbffff1d8, aHandled=@0xbffff17c)
    at ../../../view/src/nsView.cpp:817
#10 0x4108d769 in nsView::HandleEvent (this=0x843a518, event=0xbffff2c8,
    aEventFlags=28, aStatus=@0xbffff1d8, aHandled=@0xbffff17c)
    at ../../../view/src/nsView.cpp:817
#11 0x410992b3 in nsViewManager::DispatchEvent (this=0x8442430,
    aEvent=0xbffff2c8, aStatus=@0xbffff1d8)
    at ../../../view/src/nsViewManager.cpp:1737
#12 0x4108b8f8 in HandleEvent (aEvent=0xbffff2c8)
    at ../../../view/src/nsView.cpp:62
#13 0x4057aa74 in nsWidget::DispatchEvent (this=0x821ad78, aEvent=0xbffff2c8,
    aStatus=@0xbffff270) at ../../../../widget/src/gtk/nsWidget.cpp:1277
#14 0x4057a80c in nsWidget::DispatchWindowEvent (this=0x821ad78,
    event=0xbffff2c8) at ../../../../widget/src/gtk/nsWidget.cpp:1188
#15 0x4057ab28 in nsWidget::DispatchMouseEvent (this=0x821ad78,
    aEvent=@0xbffff2c8) at ../../../../widget/src/gtk/nsWidget.cpp:1304
#16 0x4057bc7b in nsWidget::OnButtonReleaseSignal (this=0x821ad78,
    aGdkButtonEvent=0x81772f0) at ../../../../widget/src/gtk/nsWidget.cpp:1915
#17 0x4057c92e in nsWidget::ButtonReleaseSignal (aWidget=0x8238048,
    aGdkButtonEvent=0x81772f0, aData=0x821ad78)
    at ../../../../widget/src/gtk/nsWidget.cpp:2360
#18 0x402d4a99 in gtk_marshal_BOOL__POINTER (object=0x8238048,
    func=0x4057c850 <nsWidget::ButtonReleaseSignal(_GtkWidget *, _GdkEventButton
*, void *)>, func_data=0x821ad78, args=0xbffff3e0) at gtkmarshal.c:30
#19 0x40299c52 in gtk_handlers_run (handlers=0x813feb0, signal=0xbffff39c,
    object=0x8238048, params=0xbffff3e0, after=0) at gtksignal.c:1909
#20 0x40299158 in gtk_signal_real_emit (object=0x8238048, signal_id=21,
    params=0xbffff3e0) at gtksignal.c:1469
#21 0x40297468 in gtk_signal_emit (object=0x8238048, signal_id=21)
    at gtksignal.c:552
#22 0x402cc110 in gtk_widget_event (widget=0x8238048, event=0x81772f0)
    at gtkwidget.c:2790
#23 0x4026c13d in gtk_propagate_event (widget=0x8238048, event=0x81772f0)
    at gtkmain.c:1296
#24 0x4026b472 in gtk_main_do_event (event=0x81772f0) at gtkmain.c:753
#25 0x40310ed6 in gdk_event_dispatch (source_data=0x0,
    current_time=0xbffff760, user_data=0x0) at gdkevents.c:2098
#26 0x4033cc8f in g_main_dispatch (current_time=0xbffff760) at gmain.c:652
#27 0x4033d277 in g_main_iterate (block=1, dispatch=1) at gmain.c:870
#28 0x4033d3f9 in g_main_run (loop=0x81bfe40) at gmain.c:928
#29 0x4026aedf in gtk_main () at gtkmain.c:475
#30 0x40564fb3 in nsAppShell::Run (this=0x809d280)
    at ../../../../widget/src/gtk/nsAppShell.cpp:388
#31 0x806fb9e in nsNativeViewerApp::Run (this=0x80add20)
    at ../../../../../../webshell/tests/viewer/unix/gtk/nsGtkMain.cpp:45
#32 0x806fe86 in main (argc=1, argv=0xbffff854)
    at ../../../../../../webshell/tests/viewer/unix/gtk/nsGtkMain.cpp:165
Assignee: rickg → pollmann
Eric -- one for you, me thinks.
Status: NEW → RESOLVED
Closed: 25 years ago
Resolution: --- → DUPLICATE
Thanks for dejong for the analysis!

*** This bug has been marked as a duplicate of 17431 ***
Status: RESOLVED → VERIFIED
marking Verified as a dup.
Product: Core → Core Graveyard
You need to log in before you can comment on or make changes to this bug.