Closed Bug 1018129 Opened 8 years ago Closed 7 years ago

[dolphin] crash at GonkCameraSource::dataCallbackTimestamp() | mozilla::LogWrapper::~LogWrapper() | mozilla::Logger::~Logger() | NS_DebugBreak()

Categories

(Firefox OS Graveyard :: Vendcom, defect)

Other
Other
defect
Not set
normal

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: angelc04, Assigned: Dafeng.Xu)

References

Details

(Keywords: crash, Whiteboard: [sprd313633][partner-blocker][b2g-crash][POVB])

Crash Data

This crash was found by partner. Here is the steps they provide. And the reproduce rate is 1/10.
1. Launch Camera and take pic
2. Switch Camera to front camera
3. Switch to video mode and take a video
4. Send several SMS to test device
   --> Camera will crash.

I was unable to reproduce on Flame v1.4. Here is the crash callstack.

-----------------------------------------------------------------------------

Operating system: Android
                  0.0.0 Linux 3.10.17 #1 PREEMPT Tue May 13 06:17:35 CST 2014 armv7l Spreadtrum/scx15_sp7715gaplus/scx15_sp7715ga:4.4.2/KOT49H/89:userdebug/test-keys
CPU: arm
     1 CPU

Crash reason:  SIGSEGV
Crash address: 0x0

Thread 6 (crashed)
 0  libxul.so!mozalloc_abort(char const*) [mozalloc_abort.cpp : 30 + 0x4]
     r4 = 0x00000000    r5 = 0x00000001    r6 = 0xb3b0175c    r7 = 0xffffffff
     r8 = 0xb6f3322c    r9 = 0xb686a195   r10 = 0x00000000    fp = 0x00000000
     sp = 0xb3b01720    lr = 0xb66f3c17    pc = 0xb66f3c1a
    Found by: given as instruction pointer in context
 1  libxul.so!NS_DebugBreak [nsDebugImpl.cpp : 421 + 0x5]
     r4 = 0x00000000    r5 = 0x00000001    r6 = 0xb3b0175c    r7 = 0xffffffff
     r8 = 0xb6f3322c    r9 = 0xb686a195   r10 = 0x00000000    fp = 0x00000000
     sp = 0xb3b01728    pc = 0xb56c3ce9
    Found by: call frame info
 2  libxul.so!mozilla::Logger::~Logger() [logging.cc : 47 + 0xd]
     r4 = 0xb3b01b90    r5 = 0x00000000    r6 = 0x00000000    r7 = 0x00000020
     r8 = 0xb2f4d560    r9 = 0xb3b01b88   r10 = 0xb3b01c48    fp = 0xb6f352ec
     sp = 0xb3b01b70    pc = 0xb5812401
    Found by: call frame info
 3  libxul.so!mozilla::LogWrapper::~LogWrapper() [logging.h : 59 + 0x5]
     r4 = 0xb3b01b90    r5 = 0x00000000    r6 = 0x00000000    r7 = 0x00000020
     r8 = 0xb2f4d560    r9 = 0xb3b01b88   r10 = 0xb3b01c48    fp = 0xb6f352ec
     sp = 0xb3b01b80    pc = 0xb57b9179
    Found by: call frame info
 4  libxul.so!android::GonkCameraSource::dataCallbackTimestamp(long long, int, android::sp<android::IMemory> const&) [GonkCameraSource.cpp : 700 + 0x3]
     r4 = 0xd301cc46    r5 = 0x00000000    r6 = 0x00000000    r7 = 0x00000020
     r8 = 0xb2f4d560    r9 = 0xb3b01b88   r10 = 0xb3b01c48    fp = 0xb6f352ec
     sp = 0xb3b01b88    pc = 0xb5dc6a2d
    Found by: call frame info
 5  libxul.so!android::GonkCameraSourceListener::postDataTimestamp(long long, int, android::sp<android::IMemory> const&) [GonkCameraSource.cpp : 103 + 0x21]
     r4 = 0xb2f4d560    r5 = 0xb6c5dfd4    r6 = 0xb3b01c48    r7 = 0x00000020
     r8 = 0x00000304    r9 = 0xb3a04000   r10 = 0xbe956c84    fp = 0xb6f352ec
     sp = 0xb3b01bc0    pc = 0xb5dc61ab
    Found by: call frame info
 6  libxul.so!android::GonkCameraHardware::postDataTimestamp(long long, int, android::sp<android::IMemory> const&) [GonkCameraHwMgr.cpp : 123 + 0xb]
     r4 = 0xb302d4c0    r5 = 0x00000020    r6 = 0xb3b01c48    r7 = 0x00000020
     r8 = 0x00000304    r9 = 0xb3a04000   r10 = 0xbe956c84    fp = 0xb6f352ec
     sp = 0xb3b01be8    pc = 0xb5dc4501
    Found by: call frame info
 7  libcamera_client.so!android::Camera::dataCallbackTimestamp(long long, int, android::sp<android::IMemory> const&) [Camera.cpp : 312 + 0x9]
     r4 = 0xb2ffd540    r5 = 0xb2ffd544    r6 = 0xb3b01c48    r7 = 0x00000020
     r8 = 0x00000304    r9 = 0xb3a04000   r10 = 0xbe956c84    fp = 0xb6f352ec
     sp = 0xb3b01c00    pc = 0xb50ea119
    Found by: call frame info
 8  libcamera_client.so!android::BnCameraClient::onTransact(unsigned int, android::Parcel const&, android::Parcel*, unsigned int) [ICameraClient.cpp : 121 + 0xf]
     r4 = 0xb3b01c48    r5 = 0xb2ffd558    r6 = 0x00000020    r7 = 0xb3b01ca4
     r8 = 0x00000304    r9 = 0xb3a04000   r10 = 0xbe956c84    fp = 0xb6f352ec
     sp = 0xb3b01c38    pc = 0xb50ec8c9
    Found by: call frame info
 9  libbinder.so!android::BBinder::transact(unsigned int, android::Parcel const&, android::Parcel*, unsigned int) [Binder.cpp : 108 + 0x11]
     r4 = 0xb3b01cd4    r5 = 0xb2ffd55c    r6 = 0x00000003    r7 = 0xb3b01ca4
     r8 = 0x00000304    r9 = 0xb3a04000   r10 = 0xbe956c84    fp = 0xb6f352ec
     sp = 0xb3b01c68    pc = 0xb51462db
    Found by: call frame info
10  libbinder.so!android::IPCThreadState::executeCommand(int) [IPCThreadState.cpp : 1074 + 0x11]
     r4 = 0xb3ffbed0    r5 = 0xb3b01ca0    r6 = 0xb6f37384    r7 = 0x00002a14
     r8 = 0x00000304    r9 = 0xb3a04000   r10 = 0xbe956c84    fp = 0xb6f352ec
     sp = 0xb3b01c88    pc = 0xb514a84f
    Found by: call frame info
11  libbinder.so!android::IPCThreadState::getAndExecuteCommand() [IPCThreadState.cpp : 436 + 0x5]
     r4 = 0xb3ffbed0    r5 = 0x00000000    r6 = 0xb3ffbf00    r7 = 0xb51599e4
     r8 = 0xb51194fd    r9 = 0xb3a04000   r10 = 0xbe956c84    fp = 0xb6f352ec
     sp = 0xb3b01d48    pc = 0xb514abcf
    Found by: call frame info
12  libbinder.so!android::IPCThreadState::joinThreadPool(bool) [IPCThreadState.cpp : 490 + 0x5]
     r4 = 0xb3ffbed0    r5 = 0xb3ffbf30    r6 = 0x00000001    r7 = 0xb51599e4
     r8 = 0xb51194fd    r9 = 0xb3a04000   r10 = 0xbe956c84    fp = 0xb6f352ec
     sp = 0xb3b01d58    pc = 0xb514ac45
    Found by: call frame info
13  libbinder.so!android::PoolThread::threadLoop() [ProcessState.cpp : 67 + 0xb]
     r4 = 0xb3d01d60    r5 = 0xb3b01d78    r6 = 0x00000001    r7 = 0xb51599e4
     r8 = 0xb51194fd    r9 = 0xb3a04000   r10 = 0xbe956c84    fp = 0xb6f352ec
     sp = 0xb3b01d70    pc = 0xb514f281
    Found by: call frame info
14  libutils.so!android::Thread::_threadLoop(void*) [Threads.cpp : 767 + 0x7]
     r4 = 0xb3d01d60    r5 = 0xb3b01d78    r6 = 0x00000001    r7 = 0xb51599e4
     r8 = 0xb51194fd    r9 = 0xb3a04000   r10 = 0xbe956c84    fp = 0xb6f352ec
     sp = 0xb3b01d78    pc = 0xb5119a03
    Found by: call frame info
15  libutils.so!thread_data_t::trampoline(thread_data_t const*) [Threads.cpp : 95 + 0x3]
     r4 = 0xb3d09770    r5 = 0x00000000    r6 = 0xb5119929    r7 = 0xb3d01d60
     r8 = 0xb51194fd    r9 = 0xb3a04000   r10 = 0xbe956c84    fp = 0xb6f352ec
     sp = 0xb3b01da0    pc = 0xb5119535
    Found by: call frame info
16  libc.so!__thread_entry [pthread_create.cpp : 105 + 0x6]
     r4 = 0xb3b01dd0    r5 = 0x0061c780    r6 = 0xb51194fd    r7 = 0xb3d09760
     r8 = 0xb51194fd    r9 = 0xb3a04000   r10 = 0xbe956c84    fp = 0xb6f352ec
     sp = 0xb3b01db8    pc = 0xb6ef621c
    Found by: call frame info
17  libc.so!pthread_create [pthread_create.cpp : 224 + 0x12]
     r4 = 0x0061c780    r5 = 0xb3b01dd0    r6 = 0x00000000    r7 = 0x00000078
     r8 = 0xb51194fd    r9 = 0xb3a04000   r10 = 0xbe956c84    fp = 0xb6f352ec
     sp = 0xb3b01dd0    pc = 0xb6ef63b8
    Found by: call frame info
Here is the log which triggered this crash.

05-17 14:18:33.815   104  2291 I SprdCameraHardware: test timestamp = 3540110406000, mIsStoreMetaData: 1. buffer_id 0x1
05-17 14:18:33.815   104  2291 D CameraClient: dataCallbackTimestamp(32)
05-17 14:18:33.815   772   778 I Gecko   : [Child 772] ###!!! ABORT: file ../../../gecko/dom/camera/GonkCameraSource.cpp, line 700
05-17 14:18:33.815   772   778 E Gecko   : mozalloc_abort: [Child 772] ###!!! ABORT: file ../../../gecko/dom/camera/GonkCameraSource.cpp, line 700
Whiteboard: [sprd313633][partner-blocker]
blocking-b2g: --- → 1.4?
Summary: [dolphin] crash at libxul.so!mozalloc_abort(char const*) [mozalloc_abort.cpp : 30 + 0x4] → [dolphin] crash at GonkCameraSource::dataCallbackTimestamp() | mozilla::LogWrapper::~LogWrapper() | mozilla::Logger::~Logger() | NS_DebugBreak()
Mike

Is this actionable? What is the user impact here?
Component: General → Gaia::Camera
Flags: needinfo?(mhabicher)
Preeti, it looks like we're getting an incorrect value back from the camera library/driver:
  CHECK(timestampUs > mLastFrameTimestampUs);

In particular, this failing CHECK() seems to suggest that a video frame is coming in that has an earlier timestamp than the previous one.

The vendor should look into why this is happening.
Flags: needinfo?(mhabicher)
Keywords: crash
Whiteboard: [sprd313633][partner-blocker] → [sprd313633][partner-blocker][b2g-crash]
Crash Signature: [@ GonkCameraSource::dataCallbackTimestamp() | mozilla::LogWrapper::~LogWrapper() | mozilla::Logger::~Logger() | NS_DebugBreak() ]
Hi James,

Based on comment 5, please mind if you can find someone in your team to take a look this issue. Thanks!
Flags: needinfo?(james.zhang)
Dafeng, please
Assignee: nobody → Dafeng.Xu
Flags: needinfo?(james.zhang)
Whiteboard: [sprd313633][partner-blocker][b2g-crash] → [sprd313633][partner-blocker][b2g-crash][POVB]
blocking-b2g: 1.4? → ---
Component: Gaia::Camera → Vendcom
Flags: needinfo?(ttsai)
Assignee: Dafeng.Xu → ming.li
Fixed on my side.
see kernel

commit bd1f93222e61597b719fe8da0585f8c34e992115
Merge: f511e74 f6e3edf
Author: james.zhang <james.zhang@spreadtrum.com>
Date:   Wed Jun 25 11:12:06 2014 +0800

    Merge "Bug#313633 cherry-pick Bug#302240 swap back to use aon pclk timer as clocksource" into sprdb2g_gonk4.4

commit f6e3edf2c82c3280c7956ee785ad4b2d47c54517
Author: wei.qiao <wei.qiao@spreadtrum.com>
Date:   Mon Apr 21 12:47:16 2014 +0800

    Bug#313633 cherry-pick Bug#302240 swap back to use aon pclk timer as clocksource
    
    [bug number  ] 302240
    [root cause  ] aon timer1 is not suitable because its counter
                register value is not stable when reading it
    [changes     ] swap back to use aon pclk timer as clocksource
    [side effects] not support idle deep mode
    [self test   ] pass on 7715ga
    [whether AOB ] no
    [reviewers   ] geng.ren;mark.yang;xi.zhang;miller.song
    
    Change-Id: I325806d1c6a359b8ba1d245aa2c2713273edaef6
Assignee: ming.li → Dafeng.Xu
Status: NEW → RESOLVED
Closed: 7 years ago
Resolution: --- → FIXED
Flags: needinfo?(ttsai)
You need to log in before you can comment on or make changes to this bug.