Closed Bug 483912 Opened 16 years ago Closed 16 years ago

Crash [@ auto_theora] on windows ce

Categories

(Core :: Audio/Video, defect)

ARM
Windows CE
defect
Not set
critical

Tracking

()

RESOLVED FIXED
Tracking Status
fennec 1.0-wm+ ---

People

(Reporter: blassey, Assigned: cajbir)

References

Details

(Keywords: crash, mobile)

Crash Data

Its a data type misalignment error console: .... ###!!! ASSERTION: Another IMC was associated: '!mOldIMC', file c:/hg/mc-min/widget/src/windows/nsWindow.cpp, line 1498 [K] Time[2009/03/17 20:32:00] DEX_CMD_STATUS_COMPLETE DEXCORE:loop=76 [K] Get RTC 0x36f16338 from ARM9 ok WARNING: NS_ENSURE_SUCCESS(rv, rv) failed with result 0x80040154: file c:/hg/mc-min/toolkit/components/places/src/nsNavHistory.cpp, line 5211 Data Abort: Thread=873c2640 Proc=80458570 'xulrunner.exe' AKY=00080001 PC=7ad43f08(xul.dll+0x00ba3f08) RA=7ad44fd0(xul.dll+0x00ba4fd0) BVA=60fda08e FSR=00000001 Unhandled exception at 0x7ad43f08 in xulrunner.exe: 0x80000002: Datatype misalignment. stack trace: > xul.dll!auto_theora(_OGGZ* oggz = 0x610b1400, long int serialno = 1457257550, unsigned char* data = 0x60fda078, long int length = 42, void* user_data = 0x00000000) Line: 153, Byte Offsets: 0x28 C xul.dll!oggz_auto_read_bos_page(_OGGZ* oggz = 0x610b1400, ogg_page* og = 0x56dbfc4e, long int serialno = 1627234424, void* user_data = 0x0000002a) Line: 1143, Byte Offsets: 0x90 C xul.dll!oggz_read_sync(_OGGZ* oggz = 0x610b1400) Line: 520, Byte Offsets: 0x4b4 C xul.dll!oggz_read(_OGGZ* oggz = 0x610b1400, long int n = 1457257550) Line: 597, Byte Offsets: 0xf8 C xul.dll!oggplay_initialise(_OggPlay* me = 0x610b1400, int block = 1457257550) Line: 122, Byte Offsets: 0xb0 C xul.dll!oggplay_open_with_reader(_OggPlayReader* reader = 0x610b1400) Line: 159, Byte Offsets: 0x8c C xul.dll!nsOggDecodeStateMachine::LoadOggHeaders(nsChannelReader* aReader = 0x56dbfc4e) Line: 1170, Byte Offsets: 0x40 C++ xul.dll!nsOggDecodeStateMachine::Run(void) Line: 907, Byte Offsets: 0x27c C++ xul.dll!nsThread::ProcessNextEvent(int mayWait = 1457257550, int* result = 0x60fda078) Line: 511, Byte Offsets: 0x24c C++ xul.dll!NS_ProcessNextEvent_P(nsIThread* thread = 0x610b1400, int mayWait = 1457257550) Line: 230, Byte Offsets: 0x64 C++ xul.dll!nsThread::ThreadFunc(void* arg = 0x610b1400) Line: 254, Byte Offsets: 0x1b4 C++ nspr4.dll!_PR_NativeRunThread(void* arg = 0x5f814c00) Line: 445, Byte Offsets: 0x104 C nspr4.dll!pr_root(void* arg = 0x5f814c00) Line: 123, Byte Offsets: 0x30 C 0x03f6732c
tracking-fennec: --- → 1.0a1-wm+
Flags: blocking1.9.1?
Oh, I guess this is an Oggz bug
Flags: blocking1.9.1? → blocking1.9.1+
tracking-fennec: 1.0a1-wm+ → 1.0a2-wm+
Conrad: I saw your message on ogg-dev. It's been about 2 years since I worked on ARM, but I ran into this type of crash previously. IIRC, on ARM you can't deference a non-divisible-by-4 address as a 32bit int. If you look at that call stack, INT32_BE_AT is dereferencing 0x60fda078 + 22, which isn't evenly divisible by 4. INT32_BE_AT(x) is defined as _be_32((*(ogg_int32_t *)(x))). I think you need to extract bytes individually and shift/add them as appropriate instead.
Severity: normal → critical
Keywords: crash
Thanks, this should now be fixed in liboggz upstream (commit 351a85 of git://git.xiph.org/liboggz.git) See http://lists.xiph.org/pipermail/ogg-dev/2009-May/001394.html
Not going to block 1.9.1 on this, but we should get the fix from upstream at some point.
Assignee: nobody → chris.double
Flags: blocking1.9.1+ → wanted1.9.1+
tracking-fennec: 1.0a2-wm+ → 1.0-wm+
liboggz commit to fix this mentioned in comment 3 has landed with bug 480063
Status: NEW → RESOLVED
Closed: 16 years ago
Resolution: --- → FIXED
Depends on: 480063
Crash Signature: [@ auto_theora]
You need to log in before you can comment on or make changes to this bug.