Closed Bug 43366 Opened 24 years ago Closed 24 years ago

When trying backspace japanese characters in mail in crashes

Categories

(MailNews Core :: Internationalization, defect, P3)

x86
Linux
defect

Tracking

(Not tracked)

VERIFIED FIXED

People

(Reporter: jeziorek, Assigned: mozeditor)

References

Details

(Keywords: crash, smoketest, Whiteboard: [dogfood+] ETA 7/11)

-Open up Netscape mail for build 2000-06-21-08-M17 comm.
-click on the new message button to write a new message 
-send it to yourself
-in the subject or body press shift + space bar and type in: kangi
- then press space bar again then hit back space it crashes

heres the call stack


 Call Stack:    (Signature = nsTextFrame::ComputeTotalWordWidth() 052f5978) 
     
   nsTextFrame::ComputeTotalWordWidth() 
                                             
     
   nsTextFrame::MeasureText() 
                                             
     
   nsTextFrame::Reflow() 
                                             
     
   nsLineLayout::ReflowFrame() 
                                             
     
   nsBlockFrame::ReflowInlineFrame() 
                                             
     
   nsBlockFrame::DoReflowInlineFrames() 
                                             
     
   nsBlockFrame::DoReflowInlineFramesAuto() 
                                             
     
   nsBlockFrame::ReflowInlineFrames() 
                                             
     
   nsBlockFrame::ReflowLine() 
                                             
     
   nsBlockFrame::ReflowDirtyLines() 
                                             
     
   nsBlockFrame::Reflow() 
                                             
     
   nsBoxToBlockAdaptor::Reflow() 
                                             
     
   nsBoxToBlockAdaptor::Layout() 
                                             
     
   nsScrollPortFrame::Layout() 
                                             
     
   nsContainerBox::LayoutChildAt() 
                                             
     
   nsGfxScrollFrameInner::LayoutBox() 
                                             
     
   nsGfxScrollFrameInner::Layout() 
                                             
     
   nsGfxScrollFrame::Layout() 
                                             
     
   nsStackLayout::Layout() 
                                             
     
   nsContainerBox::Layout() 
                                             
     
   nsBoxFrame::Layout() 
                                             
     
   nsSprocketLayout::Layout() 
                                             
     
   nsContainerBox::Layout() 
                                             
     
   nsBoxFrame::Layout() 
                                             
     
   nsSprocketLayout::Layout() 
                                             
     
   nsContainerBox::Layout() 
                                             
     
   nsBoxFrame::Layout() 
                                             
     
   nsSprocketLayout::Layout() 
                                             
     
   nsContainerBox::Layout() 
                                             
     
   nsBoxFrame::Layout() 
                                             
     
   nsSprocketLayout::Layout() 
                                             
     
   nsContainerBox::Layout() 
                                             
     
   nsBoxFrame::Layout() 
                                             
     
   nsSprocketLayout::Layout() 
                                             
     
   nsContainerBox::Layout() 
                                             
     
   nsBoxFrame::Layout() 
                                             
     
   nsSprocketLayout::Layout() 
                                             
     
   nsContainerBox::Layout() 
                                             
     
   nsBoxFrame::Layout() 
                                             
     
   nsSprocketLayout::Layout() 
                                             
     
   nsContainerBox::Layout() 
                                             
     
   nsBoxFrame::Layout() 
                                             
     
   nsSprocketLayout::Layout() 
                                             
     
   nsContainerBox::Layout() 
                                             
     
   nsBoxFrame::Layout() 
                                             
     
   nsSprocketLayout::Layout() 
                                             
     
   nsContainerBox::Layout() 
                                             
     
   nsBoxFrame::Layout() 
                                             
     
   nsSprocketLayout::Layout() 
                                             
     
   nsContainerBox::Layout() 
                                             
     
   nsBoxFrame::Layout() 
                                             
     
   nsStackLayout::Layout() 
                                             
     
   nsContainerBox::Layout() 
                                             
     
   nsBoxFrame::Layout() 
                                             
     
   nsBoxFrame::Reflow() 
                                             
     
   nsRootBoxFrame::Reflow() 
                                             
     
   nsContainerFrame::ReflowChild() 
                                             
     
   ViewportFrame::Reflow() 
                                             
     
   nsHTMLReflowCommand::Dispatch() 
                                             
     
   PresShell::ProcessReflowCommands() 
                                             
     
   PresShell::FlushPendingNotifications() 
                                             
     
   PresShell::EndReflowBatching() 
                                             
     
   nsEditor::EndUpdateViewBatch() 
                                             
     
   nsEditor::EndPlaceHolderTransaction() 
                                             
     
   nsHTMLEditor::DeleteSelection() 
                                             
     
   nsHTMLEditorLog::DeleteSelection() 
                                             
     
   nsTextEditorKeyListener::KeyPress() 
                                             
     
   nsEventListenerManager::HandleEvent() 
                                             
     
   nsGenericElement::HandleDOMEvent() 
                                             
     
   nsHTMLInputElement::HandleDOMEvent() 
                                             
     
   PresShell::HandleEventInternal() 
                                             
     
   PresShell::HandleEvent() 
                                             
     
   nsView::HandleEvent() 
                                             
     
   nsViewManager2::DispatchEvent() 
                                             
     
   HandleEvent() 
                                             
     
   nsWidget::DispatchEvent() 
                                             
     
   nsWidget::DispatchWindowEvent() 
                                             
     
   nsWidget::OnInput() 
                                             
     
   handle_key_press_event() 
                                             
     
   dispatch_superwin_event() 
                                             
     
   handle_gdk_event() 
                                             
     
   libgdk-1.2.so.0 + 0x1700b (0x4071700b) 
                                             
     
   libglib-1.2.so.0 + 0xfbe6 (0x40741be6) 
                                             
     
   libglib-1.2.so.0 + 0x101a1 (0x407421a1) 
                                             
     
   libglib-1.2.so.0 + 0x10341 (0x40742341) 
                                             
     
   libgtk-1.2.so.0 + 0x8c209 (0x4066c209) 
                                             
     
   nsAppShell::Run() 
                                             
     
   nsAppShellService::Run() 
                                             
     
   main1() 
                                             
     
   main() 
                                             
     
   libc.so.6 + 0x181eb (0x402431eb
Keywords: smoketest
This crash happens in Red Hat 6.0 En + Japanese packages environment.
It doesn't happen on Japanese Red Hat 6.2 system.
Added teruko and myself to Cc.
Is this a regression (from when)?
HTML or Plain text mail? If HTML, only mail or also happen for HTML composer?
IME, editor issue, reassign to shanjian, cc to beppe.
Assignee: nhotta → shanjian
momoi - needed for dogfood?  If so, should nominate.
Keywords: dogfood
This seems to be reproducible on Windows build on 6/21/2000.
Not consistently so ffar but enough to make me think that this is
a serious problem.
I am able to reproduce this problem consistenyl on theLinux build
from 6/21 running under RH6.2/Japanese.
By the way, I have both Windows and Linux Talkback reports
filed and they are pretty much indential to the one
cited above.
Adding crash keyword
Keywords: crash
Putting on [dogfood+] radar.
Whiteboard: [dogfood+]
Momoi san, could you attatch your Talkback reprots to this bug?
I remember I see this in other bug. I do not mark it as dogfood+ because it 
require backspace key. It is a dup of 42316. It is funny that PDT mark that one 
nsbeta2- and mark this one dogfood+
Shanjian, do you have a Linux environment for debugging? If not, please assign
this bug to me. Thanks.
The crash not only happens in mail composer, it also happens in mail account
setup wizard, like the textfield for user's name on the Identity window.
OK. This is the dump I got for a WinNT4 crash with the 6/21/ build.
As I said above, this is nearly identical to the one above.
Crahses on Windows don't occur every time and I have not been 
able to isolate the precise conditions yet. On the Linux build I 
used, it was occurring every time the same procedure as described
the original poster was used.

-------------------------------
Trigger Type:  Program Crash 
Trigger Reason:  Access violation 
Thread ID:   
Call Stack:    (Signature = nsTextFrame::ComputeTotalWordWidth f4e2e932) 
nsTextFrame::ComputeTotalWordWidth 
[d:\builds\seamonkey\mozilla\layout\html\base\src\nsTextFrame.cpp, line 4392]
nsTextFrame::MeasureText  
[d:\builds\seamonkey\mozilla\layout\html\base\src\nsTextFrame.cpp, line 3951]
nsTextFrame::Reflow 
[d:\builds\seamonkey\mozilla\layout\html\base\src\nsTextFrame.cpp, line 4180]
nsLineLayout::ReflowFrame  
[d:\builds\seamonkey\mozilla\layout\html\base\src\nsLineLayout.cpp, line 982]
nsBlockFrame::ReflowInlineFrame 
[d:\builds\seamonkey\mozilla\layout\html\base\src\nsBlockFrame.cpp, line 4421]
nsBlockFrame::DoReflowInlineFrames 
[d:\builds\seamonkey\mozilla\layout\html\base\src\nsBlockFrame.cpp, line 4305]
nsBlockFrame::DoReflowInlineFramesAuto 
[d:\builds\seamonkey\mozilla\layout\html\base\src\nsBlockFrame.cpp, line 4241]
nsBlockFrame::ReflowInlineFrames 
[d:\builds\seamonkey\mozilla\layout\html\base\src\nsBlockFrame.cpp, line 4185]
nsBlockFrame::ReflowLine  
[d:\builds\seamonkey\mozilla\layout\html\base\src\nsBlockFrame.cpp, line 3311]
nsBlockFrame::ReflowDirtyLines 
[d:\builds\seamonkey\mozilla\layout\html\base\src\nsBlockFrame.cpp, line 3000]
nsBlockFrame::Reflow 
[d:\builds\seamonkey\mozilla\layout\html\base\src\nsBlockFrame.cpp, line 1766]
nsBoxToBlockAdaptor::Reflow 
[d:\builds\seamonkey\mozilla\layout\xul\base\src\nsBoxToBlockAdaptor.cpp, line 
799]
nsBoxToBlockAdaptor::Layout 
[d:\builds\seamonkey\mozilla\layout\xul\base\src\nsBoxToBlockAdaptor.cpp, line 
469]
nsScrollPortFrame::Layout 
[d:\builds\seamonkey\mozilla\layout\html\base\src\nsScrollPortFrame.cpp, line 
361]
nsContainerBox::LayoutChildAt  
[d:\builds\seamonkey\mozilla\layout\xul\base\src\nsContainerBox.cpp, line 617]
nsGfxScrollFrameInner::LayoutBox 
[d:\builds\seamonkey\mozilla\layout\html\base\src\nsGfxScrollFrame.cpp, line 
1017]
nsGfxScrollFrameInner::Layout 
[d:\builds\seamonkey\mozilla\layout\html\base\src\nsGfxScrollFrame.cpp, line 
1104]
nsGfxScrollFrame::Layout 
[d:\builds\seamonkey\mozilla\layout\html\base\src\nsGfxScrollFrame.cpp, line 
1030]
nsStackLayout::Layout 
[d:\builds\seamonkey\mozilla\layout\xul\base\src\nsStackLayout.cpp, line 245]
nsContainerBox::Layout 
[d:\builds\seamonkey\mozilla\layout\xul\base\src\nsContainerBox.cpp, line 558]
nsBoxFrame::Layout 
[d:\builds\seamonkey\mozilla\layout\xul\base\src\nsBoxFrame.cpp, line 800]
nsSprocketLayout::Layout 
[d:\builds\seamonkey\mozilla\layout\xul\base\src\nsSprocketLayout.cpp, line 408]
nsContainerBox::Layout 
[d:\builds\seamonkey\mozilla\layout\xul\base\src\nsContainerBox.cpp, line 558]
nsBoxFrame::Layout  
[d:\builds\seamonkey\mozilla\layout\xul\base\src\nsBoxFrame.cpp, line 800]
nsSprocketLayout::Layout 
[d:\builds\seamonkey\mozilla\layout\xul\base\src\nsSprocketLayout.cpp, line 408]
nsContainerBox::Layout 
[d:\builds\seamonkey\mozilla\layout\xul\base\src\nsContainerBox.cpp, line 558]
nsBoxFrame::Layout 
[d:\builds\seamonkey\mozilla\layout\xul\base\src\nsBoxFrame.cpp, line 800]
nsSprocketLayout::Layout 
[d:\builds\seamonkey\mozilla\layout\xul\base\src\nsSprocketLayout.cpp, line 408]
nsContainerBox::Layout 
[d:\builds\seamonkey\mozilla\layout\xul\base\src\nsContainerBox.cpp, line 558]
nsBoxFrame::Layout  
[d:\builds\seamonkey\mozilla\layout\xul\base\src\nsBoxFrame.cpp, line 800]
nsSprocketLayout::Layout  
[d:\builds\seamonkey\mozilla\layout\xul\base\src\nsSprocketLayout.cpp, line 408]
nsContainerBox::Layout 
[d:\builds\seamonkey\mozilla\layout\xul\base\src\nsContainerBox.cpp, line 558]
nsBoxFrame::Layout 
[d:\builds\seamonkey\mozilla\layout\xul\base\src\nsBoxFrame.cpp, line 800]
nsSprocketLayout::Layout  
[d:\builds\seamonkey\mozilla\layout\xul\base\src\nsSprocketLayout.cpp, line 408]
nsContainerBox::Layout 
[d:\builds\seamonkey\mozilla\layout\xul\base\src\nsContainerBox.cpp, line 558]
nsBoxFrame::Layout 
[d:\builds\seamonkey\mozilla\layout\xul\base\src\nsBoxFrame.cpp, line 800]
nsSprocketLayout::Layout 
[d:\builds\seamonkey\mozilla\layout\xul\base\src\nsSprocketLayout.cpp, line 408]
nsContainerBox::Layout 
[d:\builds\seamonkey\mozilla\layout\xul\base\src\nsContainerBox.cpp, line 558]
nsBoxFrame::Layout  
[d:\builds\seamonkey\mozilla\layout\xul\base\src\nsBoxFrame.cpp, line 800]
nsSprocketLayout::Layout 
[d:\builds\seamonkey\mozilla\layout\xul\base\src\nsSprocketLayout.cpp, line 408]
nsContainerBox::Layout  
[d:\builds\seamonkey\mozilla\layout\xul\base\src\nsContainerBox.cpp, line 558]
nsBoxFrame::Layout 
[d:\builds\seamonkey\mozilla\layout\xul\base\src\nsBoxFrame.cpp, line 800]
nsSprocketLayout::Layout 
[d:\builds\seamonkey\mozilla\layout\xul\base\src\nsSprocketLayout.cpp, line 408]
nsContainerBox::Layout  
[d:\builds\seamonkey\mozilla\layout\xul\base\src\nsContainerBox.cpp, line 558]
nsBoxFrame::Layout  
[d:\builds\seamonkey\mozilla\layout\xul\base\src\nsBoxFrame.cpp, line 800]
nsSprocketLayout::Layout 
[d:\builds\seamonkey\mozilla\layout\xul\base\src\nsSprocketLayout.cpp, line 408]
nsContainerBox::Layout 
[d:\builds\seamonkey\mozilla\layout\xul\base\src\nsContainerBox.cpp, line 558]
nsBoxFrame::Layout 
[d:\builds\seamonkey\mozilla\layout\xul\base\src\nsBoxFrame.cpp, line 800]
nsSprocketLayout::Layout 
[d:\builds\seamonkey\mozilla\layout\xul\base\src\nsSprocketLayout.cpp, line 408]
nsContainerBox::Layout 
[d:\builds\seamonkey\mozilla\layout\xul\base\src\nsContainerBox.cpp, line 558]
nsBoxFrame::Layout 
[d:\builds\seamonkey\mozilla\layout\xul\base\src\nsBoxFrame.cpp, line 800]
nsStackLayout::Layout 
[d:\builds\seamonkey\mozilla\layout\xul\base\src\nsStackLayout.cpp, line 245]
nsContainerBox::Layout 
[d:\builds\seamonkey\mozilla\layout\xul\base\src\nsContainerBox.cpp, line 558]
nsBoxFrame::Layout 
[d:\builds\seamonkey\mozilla\layout\xul\base\src\nsBoxFrame.cpp, line 800]
nsBoxFrame::Reflow 
[d:\builds\seamonkey\mozilla\layout\xul\base\src\nsBoxFrame.cpp, line 651]
nsRootBoxFrame::Reflow 
[d:\builds\seamonkey\mozilla\layout\xul\base\src\nsRootBoxFrame.cpp, line 211]
nsContainerFrame::ReflowChild 
[d:\builds\seamonkey\mozilla\layout\html\base\src\nsContainerFrame.cpp, line 
716]
ViewportFrame::Reflow 
[d:\builds\seamonkey\mozilla\layout\html\base\src\nsViewportFrame.cpp, line 546]
nsHTMLReflowCommand::Dispatch 
[d:\builds\seamonkey\mozilla\layout\html\base\src\nsHTMLReflowCommand.cpp, line 
145]
PresShell::ProcessReflowCommands  
[d:\builds\seamonkey\mozilla\layout\html\base\src\nsPresShell.cpp, line 3921]
PresShell::FlushPendingNotifications 
[d:\builds\seamonkey\mozilla\layout\html\base\src\nsPresShell.cpp, line 3062]
PresShell::EndReflowBatching 
[d:\builds\seamonkey\mozilla\layout\html\base\src\nsPresShell.cpp, line 3088]
nsEditor::EndUpdateViewBatch 
[d:\builds\seamonkey\mozilla\editor\base\nsEditor.cpp, line 5058]
nsEditor::EndPlaceHolderTransaction 
[d:\builds\seamonkey\mozilla\editor\base\nsEditor.cpp, line 1235]
-------------------------------
I could not reproduce the problem on Windows. On Linux, yes, but 
it is too slow for me to debug the program. (In fact, before the 
program is started, my system complained about running out of 
memory.) Reassign the bug to erik due to its importance.
Assignee: shanjian → erik
Status: NEW → ASSIGNED
Target Milestone: --- → M17
Whiteboard: [dogfood+] → [dogfood+] ETA still unknown -- erik
erik- can you put ETA now ?
Whiteboard: [dogfood+] ETA still unknown -- erik → [dogfood+] ETA July 6
I cannot get it to crash if I use the steps described at the beginning of this
bug report. It crashes if I use the steps described in bug 42316. I tried to
change the way the widget/src/gtk code calls the XP code, in order to avoid
creating the extra text node that is involved in the crash, but none of the
changes I tried worked. This means that I am no longer sure that I can fix this
by a certain date.

Joe, I'm wondering if it would be easier to change the editor code so that the
extra text node is not created after the original text node is collapsed down to
length zero. See bug 42316 for the exact steps (Shift-Space a i u Ret a i u Ret
Backspace).
Whiteboard: [dogfood+] ETA July 6 → [dogfood+] ETA unknown
i dont think i can try to keep the empty text node around and promise to use it 
for more ime characters.  The reason I cant promise that is that more characters 
may not be coming.  Then if I leave the empty node around, we will still might 
cause the layout crash.  Plus the editor has a policy of trying to not leave 
empty nodes around, and intentionally violating that policy will complicate 
editor logic, hurting maintainability and reliability.  

I think a better approach is to get rid of the text node as soon as it becomes 
empty, and if we do continue to get ime events in the same location, just create 
a new text node.  

This approach will require generalizing some editor ime code to be able to deal 
with the text node possibly not remaining the same over the course of ime entry 
and commit.  

*** Bug 42316 has been marked as a duplicate of this bug. ***
Thanks, Joe, for helping us with this one.
Assignee: erik → jfrancis
Status: ASSIGNED → NEW
Whiteboard: [dogfood+] ETA unknown → [dogfood+] ETA 7/11
fixed; r=kin
Status: NEW → RESOLVED
Closed: 24 years ago
Resolution: --- → FIXED
I've verified the fix on local build for Solaris. Thanks!
no longer see this on the Linux commercial build as of 2000-07-13-08-M17; 
marking verified fixed
Status: RESOLVED → VERIFIED
Product: MailNews → Core
Product: Core → MailNews Core
You need to log in before you can comment on or make changes to this bug.