Bug 1794265 Comment 6 Edit History

Note: The actual edited comment in the bug view page will always show the original commenter’s name and original timestamp.

Here's a stack when the freeze occurred:

```
# Child-SP          RetAddr           Call Site
00 (Inline Function) --------`-------- xul!nsIFrame::GetOffsetFromView(struct nsPoint * aOffset = <Value unavailable error>, class nsView ** aView = <Value unavailable error>)+0x13 [C:\Users\jamie\src\g
ecko2\layout\generic\nsIFrame.cpp @ 7115]
01 00000044`405fd570 00007ff9`e18cf077 xul!GetNextPrevLineFromBlockFrame(struct nsPeekOffsetStruct * aPos = 0x00000044`405fd7b8, class nsIFrame * aBlockFrame = 0x0000017e`2e618d20, int aLineStart = <Val
ue unavailable error>, char aOutSideLimit = <Value unavailable error>)+0x223 [C:\Users\jamie\src\gecko2\layout\generic\nsIFrame.cpp @ 8387]
02 00000044`405fd6b0 00007ff9`e27ee740 xul!nsIFrame::PeekOffsetForLine(struct nsPeekOffsetStruct * aPos = 0x00000044`405fd7b8)+0xe7 [C:\Users\jamie\src\gecko2\layout\generic\nsIFrame.cpp @ 8962]
03 00000044`405fd740 00007ff9`e27ef058 xul!mozilla::a11y::HyperTextAccessible::FindOffset(void)+0x2c0 [C:\Users\jamie\src\gecko2\accessible\generic\HyperTextAccessible.cpp @ 535]
04 00000044`405fd8f0 00007ff9`e27efebd xul!mozilla::a11y::HyperTextAccessible::FindLineBoundary(unsigned int aOffset = 0, mozilla::a11y::HyperTextAccessible::EWhichLineBoundary aWhichLineBoundary = <Val
ue unavailable error>)+0x448 [C:\Users\jamie\src\gecko2\accessible\generic\HyperTextAccessible.cpp @ 738]
05 00000044`405fda00 00007ff9`e279f91f xul!mozilla::a11y::HyperTextAccessible::TextAtOffset(int aOffset = 0n0, int aBoundaryType = 0n5, int * aStartOffset = 0x00000044`405fdb4c, int * aEndOffset = 0x000
00044`405fdb48, class nsTSubstring<char16_t> * aText = 0x00000044`405fdb50 "")+0x23d [C:\Users\jamie\src\gecko2\accessible\generic\HyperTextAccessible.cpp @ 1064]
06 00000044`405fdb10 00007ffa`47e54dbe xul!mozilla::a11y::ia2AccessibleText::get_textAtOffset(long aOffset = 0n0, IA2TextBoundaryType aBoundaryType = <Value unavailable error>, long * aStartOffset = 0x0
0000044`4427e150, long * aEndOffset = 0x00000044`4427e160, wchar_t ** aText = 0x00000044`4427e170)+0x14f [C:\Users\jamie\src\gecko2\accessible\windows\ia2\ia2AccessibleText.cpp @ 322]
...
```

A second or so later, I took another stack:

```
 # Child-SP          RetAddr           Call Site
00 (Inline Function) --------`-------- xul!nsFrameIterator::nsFrameIterator(class nsPresContext * aPresContext = 0x0000017e`2b546000, class nsIFrame * aStart = 0x0000017e`2e61c020, nsIteratorType aType
= ePostOrder (0n2), bool aLockInScrollView = false, bool aFollowOOFs = false, bool aSkipPopupChecks = false)+0x32 [C:\Users\jamie\src\gecko2\layout\base\nsFrameTraversal.cpp @ 192]
01 00000044`405fd4f0 00007ff9`e18cf576 xul!NS_NewFrameTraversal(class nsIFrameEnumerator ** aEnumerator = 0x00000044`405fd620, class nsPresContext * aPresContext = 0x0000017e`2b546000, class nsIFrame *
aStart = 0x0000017e`2e61c020, nsIteratorType aType = ePostOrder (0n2), bool aVisual = <Value unavailable error>, bool aLockInScrollView = <Value unavailable error>, bool aFollowOOFs = <Value unavailable
 error>, bool aSkipPopupChecks = <Value unavailable error>)+0xf4 [C:\Users\jamie\src\gecko2\layout\base\nsFrameTraversal.cpp @ 153]
02 00000044`405fd570 00007ff9`e18cf0ff xul!GetNextPrevLineFromBlockFrame(struct nsPeekOffsetStruct * aPos = 0x00000044`405fd7b8, class nsIFrame * aBlockFrame = 0x0000017e`2e618d20, int aLineStart = <Val
ue unavailable error>, char aOutSideLimit = <Value unavailable error>)+0x2f6 [C:\Users\jamie\src\gecko2\layout\generic\nsIFrame.cpp @ 8408]
03 00000044`405fd6b0 00007ff9`e27ee740 xul!nsIFrame::PeekOffsetForLine(struct nsPeekOffsetStruct * aPos = 0x00000044`405fd7b8)+0x16f [C:\Users\jamie\src\gecko2\layout\generic\nsIFrame.cpp @ 8959]
04 00000044`405fd740 00007ff9`e27ef058 xul!mozilla::a11y::HyperTextAccessible::FindOffset(void)+0x2c0 [C:\Users\jamie\src\gecko2\accessible\generic\HyperTextAccessible.cpp @ 535]
05 00000044`405fd8f0 00007ff9`e27efebd xul!mozilla::a11y::HyperTextAccessible::FindLineBoundary(unsigned int aOffset = 0, mozilla::a11y::HyperTextAccessible::EWhichLineBoundary aWhichLineBoundary = <Val
ue unavailable error>)+0x448 [C:\Users\jamie\src\gecko2\accessible\generic\HyperTextAccessible.cpp @ 738]
06 00000044`405fda00 00007ff9`e279f91f xul!mozilla::a11y::HyperTextAccessible::TextAtOffset(int aOffset = 0n0, int aBoundaryType = 0n5, int * aStartOffset = 0x00000044`405fdb4c, int * aEndOffset = 0x000
00044`405fdb48, class nsTSubstring<char16_t> * aText = 0x00000044`405fdb50 "")+0x23d [C:\Users\jamie\src\gecko2\accessible\generic\HyperTextAccessible.cpp @ 1064]
...
```

This suggests we're stuck in an infinite loop in GetNextPrevLineFromBlockFrame.
Here's a stack when the freeze occurred:

```
# Child-SP          RetAddr           Call Site
00 (Inline Function) --------`-------- xul!nsIFrame::GetOffsetFromView(struct nsPoint * aOffset = <Value unavailable error>, class nsView ** aView = <Value unavailable error>)+0x13 [C:\Users\jamie\src\gecko2\layout\generic\nsIFrame.cpp @ 7115]
01 00000044`405fd570 00007ff9`e18cf077 xul!GetNextPrevLineFromBlockFrame(struct nsPeekOffsetStruct * aPos = 0x00000044`405fd7b8, class nsIFrame * aBlockFrame = 0x0000017e`2e618d20, int aLineStart = <Value unavailable error>, char aOutSideLimit = <Value unavailable error>)+0x223 [C:\Users\jamie\src\gecko2\layout\generic\nsIFrame.cpp @ 8387]
02 00000044`405fd6b0 00007ff9`e27ee740 xul!nsIFrame::PeekOffsetForLine(struct nsPeekOffsetStruct * aPos = 0x00000044`405fd7b8)+0xe7 [C:\Users\jamie\src\gecko2\layout\generic\nsIFrame.cpp @ 8962]
03 00000044`405fd740 00007ff9`e27ef058 xul!mozilla::a11y::HyperTextAccessible::FindOffset(void)+0x2c0 [C:\Users\jamie\src\gecko2\accessible\generic\HyperTextAccessible.cpp @ 535]
04 00000044`405fd8f0 00007ff9`e27efebd xul!mozilla::a11y::HyperTextAccessible::FindLineBoundary(unsigned int aOffset = 0, mozilla::a11y::HyperTextAccessible::EWhichLineBoundary aWhichLineBoundary = <Value unavailable error>)+0x448 [C:\Users\jamie\src\gecko2\accessible\generic\HyperTextAccessible.cpp @ 738]
05 00000044`405fda00 00007ff9`e279f91f xul!mozilla::a11y::HyperTextAccessible::TextAtOffset(int aOffset = 0n0, int aBoundaryType = 0n5, int * aStartOffset = 0x00000044`405fdb4c, int * aEndOffset = 0x000
00044`405fdb48, class nsTSubstring<char16_t> * aText = 0x00000044`405fdb50 "")+0x23d [C:\Users\jamie\src\gecko2\accessible\generic\HyperTextAccessible.cpp @ 1064]
06 00000044`405fdb10 00007ffa`47e54dbe xul!mozilla::a11y::ia2AccessibleText::get_textAtOffset(long aOffset = 0n0, IA2TextBoundaryType aBoundaryType = <Value unavailable error>, long * aStartOffset = 0x00000044`4427e150, long * aEndOffset = 0x00000044`4427e160, wchar_t ** aText = 0x00000044`4427e170)+0x14f [C:\Users\jamie\src\gecko2\accessible\windows\ia2\ia2AccessibleText.cpp @ 322]
...
```

A second or so later, I took another stack:

```
 # Child-SP          RetAddr           Call Site
00 (Inline Function) --------`-------- xul!nsFrameIterator::nsFrameIterator(class nsPresContext * aPresContext = 0x0000017e`2b546000, class nsIFrame * aStart = 0x0000017e`2e61c020, nsIteratorType aType= ePostOrder (0n2), bool aLockInScrollView = false, bool aFollowOOFs = false, bool aSkipPopupChecks = false)+0x32 [C:\Users\jamie\src\gecko2\layout\base\nsFrameTraversal.cpp @ 192]
01 00000044`405fd4f0 00007ff9`e18cf576 xul!NS_NewFrameTraversal(class nsIFrameEnumerator ** aEnumerator = 0x00000044`405fd620, class nsPresContext * aPresContext = 0x0000017e`2b546000, class nsIFrame *aStart = 0x0000017e`2e61c020, nsIteratorType aType = ePostOrder (0n2), bool aVisual = <Value unavailable error>, bool aLockInScrollView = <Value unavailable error>, bool aFollowOOFs = <Value unavailable error>, bool aSkipPopupChecks = <Value unavailable error>)+0xf4 [C:\Users\jamie\src\gecko2\layout\base\nsFrameTraversal.cpp @ 153]
02 00000044`405fd570 00007ff9`e18cf0ff xul!GetNextPrevLineFromBlockFrame(struct nsPeekOffsetStruct * aPos = 0x00000044`405fd7b8, class nsIFrame * aBlockFrame = 0x0000017e`2e618d20, int aLineStart = <Value unavailable error>, char aOutSideLimit = <Value unavailable error>)+0x2f6 [C:\Users\jamie\src\gecko2\layout\generic\nsIFrame.cpp @ 8408]
03 00000044`405fd6b0 00007ff9`e27ee740 xul!nsIFrame::PeekOffsetForLine(struct nsPeekOffsetStruct * aPos = 0x00000044`405fd7b8)+0x16f [C:\Users\jamie\src\gecko2\layout\generic\nsIFrame.cpp @ 8959]
04 00000044`405fd740 00007ff9`e27ef058 xul!mozilla::a11y::HyperTextAccessible::FindOffset(void)+0x2c0 [C:\Users\jamie\src\gecko2\accessible\generic\HyperTextAccessible.cpp @ 535]
05 00000044`405fd8f0 00007ff9`e27efebd xul!mozilla::a11y::HyperTextAccessible::FindLineBoundary(unsigned int aOffset = 0, mozilla::a11y::HyperTextAccessible::EWhichLineBoundary aWhichLineBoundary = <Value unavailable error>)+0x448 [C:\Users\jamie\src\gecko2\accessible\generic\HyperTextAccessible.cpp @ 738]
06 00000044`405fda00 00007ff9`e279f91f xul!mozilla::a11y::HyperTextAccessible::TextAtOffset(int aOffset = 0n0, int aBoundaryType = 0n5, int * aStartOffset = 0x00000044`405fdb4c, int * aEndOffset = 0x000
00044`405fdb48, class nsTSubstring<char16_t> * aText = 0x00000044`405fdb50 "")+0x23d [C:\Users\jamie\src\gecko2\accessible\generic\HyperTextAccessible.cpp @ 1064]
...
```

This suggests we're stuck in an infinite loop in GetNextPrevLineFromBlockFrame.
Here's a stack when the freeze occurred:

```
# Child-SP          RetAddr           Call Site
00 (Inline Function) --------`-------- xul!nsIFrame::GetOffsetFromView(struct nsPoint * aOffset = <Value unavailable error>, class nsView ** aView = <Value unavailable error>)+0x13 [C:\Users\jamie\src\gecko2\layout\generic\nsIFrame.cpp @ 7115]
01 00000044`405fd570 00007ff9`e18cf077 xul!GetNextPrevLineFromBlockFrame(struct nsPeekOffsetStruct * aPos = 0x00000044`405fd7b8, class nsIFrame * aBlockFrame = 0x0000017e`2e618d20, int aLineStart = <Value unavailable error>, char aOutSideLimit = <Value unavailable error>)+0x223 [C:\Users\jamie\src\gecko2\layout\generic\nsIFrame.cpp @ 8387]
02 00000044`405fd6b0 00007ff9`e27ee740 xul!nsIFrame::PeekOffsetForLine(struct nsPeekOffsetStruct * aPos = 0x00000044`405fd7b8)+0xe7 [C:\Users\jamie\src\gecko2\layout\generic\nsIFrame.cpp @ 8962]
03 00000044`405fd740 00007ff9`e27ef058 xul!mozilla::a11y::HyperTextAccessible::FindOffset(void)+0x2c0 [C:\Users\jamie\src\gecko2\accessible\generic\HyperTextAccessible.cpp @ 535]
04 00000044`405fd8f0 00007ff9`e27efebd xul!mozilla::a11y::HyperTextAccessible::FindLineBoundary(unsigned int aOffset = 0, mozilla::a11y::HyperTextAccessible::EWhichLineBoundary aWhichLineBoundary = <Value unavailable error>)+0x448 [C:\Users\jamie\src\gecko2\accessible\generic\HyperTextAccessible.cpp @ 738]
05 00000044`405fda00 00007ff9`e279f91f xul!mozilla::a11y::HyperTextAccessible::TextAtOffset(int aOffset = 0n0, int aBoundaryType = 0n5, int * aStartOffset = 0x00000044`405fdb4c, int * aEndOffset = 0x00000044`405fdb48, class nsTSubstring<char16_t> * aText = 0x00000044`405fdb50 "")+0x23d [C:\Users\jamie\src\gecko2\accessible\generic\HyperTextAccessible.cpp @ 1064]
06 00000044`405fdb10 00007ffa`47e54dbe xul!mozilla::a11y::ia2AccessibleText::get_textAtOffset(long aOffset = 0n0, IA2TextBoundaryType aBoundaryType = <Value unavailable error>, long * aStartOffset = 0x00000044`4427e150, long * aEndOffset = 0x00000044`4427e160, wchar_t ** aText = 0x00000044`4427e170)+0x14f [C:\Users\jamie\src\gecko2\accessible\windows\ia2\ia2AccessibleText.cpp @ 322]
...
```

A second or so later, I took another stack:

```
 # Child-SP          RetAddr           Call Site
00 (Inline Function) --------`-------- xul!nsFrameIterator::nsFrameIterator(class nsPresContext * aPresContext = 0x0000017e`2b546000, class nsIFrame * aStart = 0x0000017e`2e61c020, nsIteratorType aType= ePostOrder (0n2), bool aLockInScrollView = false, bool aFollowOOFs = false, bool aSkipPopupChecks = false)+0x32 [C:\Users\jamie\src\gecko2\layout\base\nsFrameTraversal.cpp @ 192]
01 00000044`405fd4f0 00007ff9`e18cf576 xul!NS_NewFrameTraversal(class nsIFrameEnumerator ** aEnumerator = 0x00000044`405fd620, class nsPresContext * aPresContext = 0x0000017e`2b546000, class nsIFrame *aStart = 0x0000017e`2e61c020, nsIteratorType aType = ePostOrder (0n2), bool aVisual = <Value unavailable error>, bool aLockInScrollView = <Value unavailable error>, bool aFollowOOFs = <Value unavailable error>, bool aSkipPopupChecks = <Value unavailable error>)+0xf4 [C:\Users\jamie\src\gecko2\layout\base\nsFrameTraversal.cpp @ 153]
02 00000044`405fd570 00007ff9`e18cf0ff xul!GetNextPrevLineFromBlockFrame(struct nsPeekOffsetStruct * aPos = 0x00000044`405fd7b8, class nsIFrame * aBlockFrame = 0x0000017e`2e618d20, int aLineStart = <Value unavailable error>, char aOutSideLimit = <Value unavailable error>)+0x2f6 [C:\Users\jamie\src\gecko2\layout\generic\nsIFrame.cpp @ 8408]
03 00000044`405fd6b0 00007ff9`e27ee740 xul!nsIFrame::PeekOffsetForLine(struct nsPeekOffsetStruct * aPos = 0x00000044`405fd7b8)+0x16f [C:\Users\jamie\src\gecko2\layout\generic\nsIFrame.cpp @ 8959]
04 00000044`405fd740 00007ff9`e27ef058 xul!mozilla::a11y::HyperTextAccessible::FindOffset(void)+0x2c0 [C:\Users\jamie\src\gecko2\accessible\generic\HyperTextAccessible.cpp @ 535]
05 00000044`405fd8f0 00007ff9`e27efebd xul!mozilla::a11y::HyperTextAccessible::FindLineBoundary(unsigned int aOffset = 0, mozilla::a11y::HyperTextAccessible::EWhichLineBoundary aWhichLineBoundary = <Value unavailable error>)+0x448 [C:\Users\jamie\src\gecko2\accessible\generic\HyperTextAccessible.cpp @ 738]
06 00000044`405fda00 00007ff9`e279f91f xul!mozilla::a11y::HyperTextAccessible::TextAtOffset(int aOffset = 0n0, int aBoundaryType = 0n5, int * aStartOffset = 0x00000044`405fdb4c, int * aEndOffset = 0x00000044`405fdb48, class nsTSubstring<char16_t> * aText = 0x00000044`405fdb50 "")+0x23d [C:\Users\jamie\src\gecko2\accessible\generic\HyperTextAccessible.cpp @ 1064]
...
```

This suggests we're stuck in an infinite loop in GetNextPrevLineFromBlockFrame.

Back to Bug 1794265 Comment 6