Camera - preview freezes after taking 4 to 6 photos on Otoro

RESOLVED FIXED in mozilla18

Status

()

defect
RESOLVED FIXED
7 years ago
7 years ago

People

(Reporter: mikeh, Assigned: kanru)

Tracking

Trunk
mozilla18
ARM
Gonk (Firefox OS)
Points:
---
Dependency tree / graph

Firefox Tracking Flags

(blocking-basecamp:+)

Details

Attachments

(3 attachments, 3 obsolete attachments)

Observed: after taking somewhere between four and six photos with the camera on Otoro, the preview freezes.  According to logcat, the preview stream is still being produced by the camera, and pressing the shutter button will cause a picture to be taken, but the preview stream never comes back.  If the camera app is closed (by holding down the Home button and then swiping the app up), when the app is reopened, the preview works.

Expected: the preview should not freeze, no matter how many photos are taken.

Steps to Reproduce:
1. Open the camera app
2. Take several photos; observe that after about 4 to 6 photos, the preview stops working
3. Press the shutter button to take another photo; observe that this works
4. Tap the Home button to "leave" the camera app; observe that screen doesn't change
5. Hold down the Home button to bring up the task manager
6. Swipe the camera app up to kill it
7. Open the camera app; observe that the preview works
blocking-basecamp: --- → ?
blocking-basecamp: ? → +
Update from investigation, as posted to related gaia issue: "I just reproduced the problem and diff'ed neighbouring sections of the logcat output, and as far as the Gonk and Gecko layers are concerned, everything is fine. The camera hardware seems to be generating a steady stream of data, and if you press the shutter button, pictures still get taken, but the preview never recovers.  Next, I'm going to look into whether or not the "data" from the camera actually contains preview frames."
Confirmed that even when the preview stream is frozen, the camera produces preview frames with different data.
Assignee

Comment 4

7 years ago
With today's build, the preview only shows first frame then stops :(
Talked with Mike. Because he is working on this, I just assign this case to him. Thanks, Mike!
Assignee: nobody → mhabicher
I'm also experiencing this with Nexus S, just reproduced it after ~ 8 pictures. However, I can't get preview back, I have to reboot.
Taking 4 photos, exiting Camera app, killing it from task manager, restarting Camera app, taking another 5 photos, exiting Camera app. Killing it again. Taking another set of 5 shots.
Not reproduced this way.
Taking three more photos after the previous steps, without killing and restarting Camera app, brings the issue and even crashed b2g. Here is logcat:

I/Gecko   (   77): Autofocus complete
I/Gecko   (   77): virtual nsresult mozilla::TakePictureTask::Run():299
I/Gecko   (   77): setting picture rotation to 90 degrees (mapped from 90)
I/Gecko   (   77): setting picture latitude to 43.468005
I/Gecko   (   77): setting picture longitude to -80.523399
I/Gecko   (   77): virtual void mozilla::nsGonkCameraControl::PushParameters():307
I/CameraHardwareSec(   77): int android::CameraHardwareSec::previewThreadWrapper(): calling mSecCamera->stopPreview() and waiting
I/Gecko   (   77): virtual nsresult mozilla::TakePictureTask::Run():301
I/SecCamera(   77): int android::fimc_v4l2_querybuf(int, android::fimc_buffer*, v4l2_buf_type) :
I/SecCamera(   77): int android::fimc_v4l2_querybuf(int, android::fimc_buffer*, v4l2_buf_type): buffer->start = 0x58712000 v4l2_buf.length = 4261248
I/CameraHardwareSec(   77): == Camera Sensor Detect S5K4ECGX - Samsung LSI SOC 5M ==
D/JpegEncoder(   77): encode E
D/JpegEncoder(   77): encode X
D/SecCamera(   77): Shutter speed=66635 us, iso=100
D/SecCamera(   77): AV=3, TV=4, SV=5
D/JpegEncoder(   77): makeExif E
D/JpegEncoder(   77): makeExif X
I/SecCamera(   77): int android::SecCamera::endSnapshot() :
I/SecCamera(   77): munmap():virt. addr 0x58712000 size = 4261248
I/Gecko   (   77): getListOfCameras : get_number_of_cameras() returned 2
I/Gecko   (   77): mozilla::nsGonkCameraControl::nsGonkCameraControl(PRUint32, nsIThread*):114
I/Gecko   (   77): static void mozilla::GonkCameraHardware::ReleaseHandle(PRUint32): aHwHandle = 19, hw = 0x26dac68 (sHwHandle = 19)
I/Gecko   (   77): static void mozilla::GonkCameraHardware::ReleaseHandle(PRUint32): before: sHwHandle = 19
I/CameraHardwareSec(   77): void android::CameraHardwareSec::stopPreviewInternal() : preview not running, doing nothing
I/CameraHardwareSec(   77): int android::CameraHardwareSec::previewThreadWrapper(): return from wait
I/CameraHardwareSec(   77): int android::CameraHardwareSec::previewThreadWrapper(): exiting
W/SecCamera(   77): int android::SecCamera::stopPreview(): doing nothing because m_flag_camera_start is zero
W/SecCamera(   77): int android::SecCamera::stopRecord(): doing nothing because m_flag_record_start is zero
I/SecCamera(   77): DeinitCamera: m_cam_fd(73)
I/SecCamera(   77): DeinitCamera: m_cam_fd2(74)
W/GraphicBufferMapper(   77): unregisterBuffer(0x2b57090) failed -22 (Invalid argument)
I/Gecko   (   77): static void mozilla::GonkCameraHardware::ReleaseHandle(PRUint32): after: sHwHandle = 20
I/Gecko   (   77): mozilla::GonkCameraHardware::~GonkCameraHardware():183 : this = 0x26dac68
I/        (   77): Destroying camera 0
I/CameraHardwareSec(   77): int android::HAL_camera_device_close(hw_device_t*)
I/SecCamera(   77): DeinitCamera : already deinitialized
I/Gecko   (   77): mozilla::GonkCameraHardware::GonkCameraHardware(mozilla::GonkCamera*, PRUint32): this = 0x26dac68 (aTarget = 0x2de7478)
I/Gecko   (   77): void mozilla::GonkCameraHardware::init(): this = 0x26dac68
I/        (   77): Opening camera 0
I/CameraHardwareSec(   77): int android::HAL_camera_device_open(const hw_module_t*, const char*, hw_device_t**): open camera 0
E/SecCamera(   77): initCamera: m_cam_fd(73), m_jpeg_fd(0)
I/SecCamera(   77): Name of input channel[0] is S5K4ECGX
I/Gecko   (   77): virtual void CameraPreviewListener::NotifyConsumptionChanged(mozilla::MediaStreamGraph*, mozilla::MediaStreamListener::Consumption):32 : this=0x296b450
I/Gecko   (   77): camera viewfinder is not consuming
E/SecCamera(   77): initCamera: m_cam_fd2(74)
I/SecCamera(   77): Name of input channel[0] is S5K4ECGX
I/SecCamera(   77): initCamera : initialized
I/SecCamera(   77): Name of input channel[0] is S5K4ECGX
I/CameraHardwareSec(   77): int android::HAL_camera_device_open(const hw_module_t*, const char*, hw_device_t**): opened camera 0 (0x310b660)
I/Gecko   (   77): mozilla::nsGonkCameraControl::nsGonkCameraControl(PRUint32, nsIThread*):116 : this = 0x2de7478, mHwHandle = 20
I/Gecko   (   77): minimum exposure compensation = -4.000000
I/Gecko   (   77): exposure compensation step = 0.500000
I/Gecko   (   77): maximum metering areas = -1
I/Gecko   (   77): maximum focus areas = -1
I/Gecko   (   77): virtual nsresult GetCameraTask::Run():104
I/CameraHardwareSec(   77): int android::CameraHardwareSec::previewThreadWrapper(): starting
I/CameraHardwareSec(   77): int android::CameraHardwareSec::previewThreadWrapper(): calling mSecCamera->stopPreview() and waiting
W/SecCamera(   77): int android::SecCamera::stopPreview(): doing nothing because m_flag_camera_start is zero
I/Gecko   (   77): mozilla::nsCameraCapabilities::nsCameraCapabilities(mozilla::nsCameraControl*):35 : this=0x2b6e880
I/Gecko   (   77): virtual void mozilla::nsGonkCameraControl::PushParameters():307
I/Gecko   (   77): virtual nsresult mozilla::PushParametersTask::Run():404
I/Gecko   (   77): virtual nsresult mozilla::PushParametersTask::Run():406
I/Gecko   (   77): mozilla::CameraPreview::CameraPreview(nsIThread*, PRUint32, PRUint32):73 : mWidth=800, mHeight=480 : this=0x24890c0
I/Gecko   (   77): CameraPreviewListener::CameraPreviewListener(mozilla::CameraPreview*):20 : this=0x2f8dcb8
I/Gecko   (   77): virtual void CameraPreviewListener::NotifyConsumptionChanged(mozilla::MediaStreamGraph*, mozilla::MediaStreamListener::Consumption):32 : this=0x2f8dcb8
I/Gecko   (   77): camera viewfinder is consuming
I/Gecko   (   77): static int mozilla::GonkCameraHardware::StartPreview(PRUint32):423 : aHwHandle = 20, hw = 0x26dac68
I/Gecko   (   77): Preview formats: yuv420sp,yuv420p
I/Gecko   (   77): Camera ignored our request for 'yuv420p' preview, will have to convert (from 2)
W/GraphicBufferMapper(   77): unregisterBuffer(0x2f6a398) failed -22 (Invalid argument)
W/GraphicBufferMapper(   77): unregisterBuffer(0x2792ad0) failed -22 (Invalid argument)
I/GeckoDump(   77): XXX FIXME : Got a mozContentEvent: permission-allow
E/GeckoConsole(   77): Content JS LOG at app://camera.gaiamobile.org/js/camera.js:280 in anonymous: image saved as 'img_20120820-175153.jpg'
D/CameraHardwareSec(   77): mPreviewHeap(fd(73), size(518400), width(720), height(480))
I/CameraHardwareSec(   77): int android::CameraHardwareSec::previewThreadWrapper(): return from wait
E/GeckoConsole(   77): CC(T+226.6) duration: 39ms, suspected: 468, visited: 2201 RCed and 4180 GCed, collected: 0 RCed and 0 GCed (60 waiting for GC)
E/GeckoConsole(   77): ForgetSkippable 6 times before CC, min: 0 ms, max: 26 ms, avg: 6 ms, total: 38 ms, removed: 342
I/ServiceManager(   72): service 'media.audio_flinger' died
I/ServiceManager(   72): service 'media.player' died
I/ServiceManager(   72): service 'media.camera' died
I/ServiceManager(   72): service 'media.audio_policy' died
I/        (  328): ServiceManager: 0x5d7958
I/AudioFlinger(  328): Loaded primary audio interface from LEGACY Audio HW HAL (audio)
I/AudioFlinger(  328): Using 'LEGACY Audio HW HAL' (audio.primary) as the primary audio interface
I/AudioFlinger(  328): Loaded a2dp audio interface from A2DP Audio HW HAL (audio)
D/AudioHardwareInterface(  328): setMode(NORMAL)
I/CameraService(  328): CameraService started (pid=328)
I/AudioFlinger(  328): AudioFlinger's thread 0x5d89a0 ready to run
W/AudioFlinger(  328): Thread AudioOut_1 cannot connect to the power manager service
D/AudioHardware(  328): AudioStreamOutALSA::setParameters() routing=2
D/AudioHardware(  328): ### setVoiceVolume_l
I/AudioPolicyService(  328): Loaded audio policy from LEGACY Audio Policy HAL (audio_policy)
E/profiler(  329): Registering start signal
With gdb attached,
./run-gdb.sh attach
Attached; pid = 329
Listening on port 11000
prebuilt/linux-x86/toolchain/arm-linux-androideabi-4.4.x/bin/arm-linux-androideabi-gdb -x /tmp/b2g.gdbinit.alex /home/alex/codaz/B2G/objdir-gecko/dist/bin/b2g
GNU gdb (GDB) 7.1-android-gg2
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "--host=i686-linux-gnu --target=arm-elf-linux".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /home/alex/codaz/B2G/objdir-gecko/dist/bin/b2g...done.
Remote debugging from host 127.0.0.1
syscall () at bionic/libc/arch-arm/bionic/syscall.S:50
50	    ldmfd   sp!, {r4, r5, r6, r7}
(gdb) continue 
Continuing.

Child terminated with signal = 0x9 (SIGKILL)

Program terminated with signal SIGKILL, Killed.
The program no longer exists.
(gdb)
With gdb attached, when no SIGKILL comes in our way, I forced a SIGINT:
syscall () at bionic/libc/arch-arm/bionic/syscall.S:50
50	    ldmfd   sp!, {r4, r5, r6, r7}
(gdb) continue 
Continuing.




^C[New Thread 751.851]

Program received signal SIGINT, Interrupt.
[Switching to Thread 751.851]
__futex_syscall3 () at bionic/libc/arch-arm/bionic/atomics_arm.S:182
182	    swi     #0
(gdb) bt
#0  __futex_syscall3 () at bionic/libc/arch-arm/bionic/atomics_arm.S:182
#1  0x400e536c in __pthread_cond_timedwait_relative (cond=0x2db122c, mutex=0x2db123c, reltime=0x0) at bionic/libc/bionic/pthread.c:1477
#2  0x400e5420 in __pthread_cond_timedwait (cond=0x2db122c, mutex=0x2db123c, abstime=0x0, clock=0) at bionic/libc/bionic/pthread.c:1500
#3  0x4022b238 in PR_WaitCondVar (cvar=0x2db1228, timeout=4294967295) at /home/alex/codaz/B2G/gecko/nsprpub/pr/src/pthreads/ptsynch.c:385
#4  0x4022b260 in PR_Wait (mon=0x2db1238, timeout=128) at /home/alex/codaz/B2G/gecko/nsprpub/pr/src/pthreads/ptsynch.c:582
#5  0x40c886dc in mozilla::ReentrantMonitor::Wait (this=0x2db11ac, mayWait=true, result=0x462ffe90) at ../../dist/include/mozilla/ReentrantMonitor.h:90
#6  mozilla::ReentrantMonitorAutoEnter::Wait (this=0x2db11ac, mayWait=true, result=0x462ffe90) at ../../dist/include/mozilla/ReentrantMonitor.h:192
#7  nsEventQueue::GetEvent (this=0x2db11ac, mayWait=true, result=0x462ffe90) at /home/alex/codaz/B2G/gecko/xpcom/threads/nsEventQueue.cpp:51
#8  0x40c8904e in nsThread::ProcessNextEvent (this=0x2db1180, mayWait=true, result=0x462ffeb7) at /home/alex/codaz/B2G/gecko/xpcom/threads/nsThread.cpp:605
#9  0x40c69c66 in NS_ProcessNextEvent_P (thread=0x2db122c, mayWait=true) at /home/alex/codaz/B2G/objdir-gecko/xpcom/build/nsThreadUtils.cpp:220
#10 0x40c894a0 in nsThread::ThreadFunc (arg=<value optimized out>) at /home/alex/codaz/B2G/gecko/xpcom/threads/nsThread.cpp:257
#11 0x4022e9b4 in _pt_root (arg=<value optimized out>) at /home/alex/codaz/B2G/gecko/nsprpub/pr/src/pthreads/ptthread.c:156
#12 0x400e5c28 in __thread_entry (func=0x4022e955 <_pt_root>, arg=0x2db1310, tls=<value optimized out>) at bionic/libc/bionic/pthread.c:217
#13 0x400e577c in pthread_create (thread_out=<value optimized out>, attr=0xbeefd284, start_routine=0x4022e955 <_pt_root>, arg=0x2db1310) at bionic/libc/bionic/pthread.c:357
#14 0x00000000 in ?? ()
(gdb)
(gdb) info threads
[New Thread 751.756]
[New Thread 751.757]
[New Thread 751.758]
[New Thread 751.759]
[New Thread 751.760]
[New Thread 751.761]
[New Thread 751.762]
[New Thread 751.763]
[New Thread 751.764]
[New Thread 751.765]
[New Thread 751.766]
[New Thread 751.767]
[New Thread 751.768]
[New Thread 751.769]
[New Thread 751.770]
[New Thread 751.771]
[New Thread 751.772]
[New Thread 751.773]
[New Thread 751.774]
[New Thread 751.775]
[New Thread 751.776]
[New Thread 751.777]
[New Thread 751.778]
[New Thread 751.779]
[New Thread 751.785]
[New Thread 751.786]
[New Thread 751.796]
[New Thread 751.797]
[New Thread 751.798]
[New Thread 751.799]
[New Thread 751.800]
[New Thread 751.802]
[New Thread 751.833]
[New Thread 751.837]
[New Thread 751.838]
[New Thread 751.842]
[New Thread 751.843]
[New Thread 751.856]
[New Thread 751.940]
[New Thread 751.941]
  42 Thread 751.941  __futex_syscall3 () at bionic/libc/arch-arm/bionic/atomics_arm.S:182
  41 Thread 751.940  __futex_syscall3 () at bionic/libc/arch-arm/bionic/atomics_arm.S:182
  40 Thread 751.856  __futex_syscall3 () at bionic/libc/arch-arm/bionic/atomics_arm.S:183
  39 Thread 751.843  __futex_syscall3 () at bionic/libc/arch-arm/bionic/atomics_arm.S:182
  38 Thread 751.842  __futex_syscall3 () at bionic/libc/arch-arm/bionic/atomics_arm.S:182
  37 Thread 751.838  __futex_syscall3 () at bionic/libc/arch-arm/bionic/atomics_arm.S:182
  36 Thread 751.837  __futex_syscall3 () at bionic/libc/arch-arm/bionic/atomics_arm.S:182
  35 Thread 751.833  __futex_syscall3 () at bionic/libc/arch-arm/bionic/atomics_arm.S:183
  34 Thread 751.802  0xffff0520 in ?? ()
  33 Thread 751.800  __futex_syscall3 () at bionic/libc/arch-arm/bionic/atomics_arm.S:182
  32 Thread 751.799  __futex_syscall3 () at bionic/libc/arch-arm/bionic/atomics_arm.S:182
  31 Thread 751.798  __futex_syscall3 () at bionic/libc/arch-arm/bionic/atomics_arm.S:182
  30 Thread 751.797  __futex_syscall3 () at bionic/libc/arch-arm/bionic/atomics_arm.S:182
  29 Thread 751.796  __futex_syscall3 () at bionic/libc/arch-arm/bionic/atomics_arm.S:182
  28 Thread 751.786  __ioctl () at bionic/libc/arch-arm/syscalls/__ioctl.S:9
  27 Thread 751.785  __futex_syscall3 () at bionic/libc/arch-arm/bionic/atomics_arm.S:182
  26 Thread 751.779  __futex_syscall3 () at bionic/libc/arch-arm/bionic/atomics_arm.S:182
  25 Thread 751.778  nanosleep () at bionic/libc/arch-arm/syscalls/nanosleep.S:10
  24 Thread 751.777  poll () at bionic/libc/arch-arm/syscalls/poll.S:10
  23 Thread 751.776  syscall () at bionic/libc/arch-arm/bionic/syscall.S:50
  22 Thread 751.775  read () at bionic/libc/arch-arm/syscalls/read.S:9
  21 Thread 751.774  __futex_syscall3 () at bionic/libc/arch-arm/bionic/atomics_arm.S:182
  20 Thread 751.773  __futex_syscall3 () at bionic/libc/arch-arm/bionic/atomics_arm.S:182
  19 Thread 751.772  __futex_syscall3 () at bionic/libc/arch-arm/bionic/atomics_arm.S:182
  18 Thread 751.771  __futex_syscall3 () at bionic/libc/arch-arm/bionic/atomics_arm.S:182
  17 Thread 751.770  poll () at bionic/libc/arch-arm/syscalls/poll.S:10
  16 Thread 751.769  __futex_syscall3 () at bionic/libc/arch-arm/bionic/atomics_arm.S:182
  15 Thread 751.768  __futex_syscall3 () at bionic/libc/arch-arm/bionic/atomics_arm.S:183
  14 Thread 751.767  __futex_syscall3 () at bionic/libc/arch-arm/bionic/atomics_arm.S:182
  13 Thread 751.766  __futex_syscall3 () at bionic/libc/arch-arm/bionic/atomics_arm.S:182
  12 Thread 751.765  __futex_syscall3 () at bionic/libc/arch-arm/bionic/atomics_arm.S:182
  11 Thread 751.764  __futex_syscall3 () at bionic/libc/arch-arm/bionic/atomics_arm.S:182
  10 Thread 751.763  __futex_syscall3 () at bionic/libc/arch-arm/bionic/atomics_arm.S:182
  9 Thread 751.762  __futex_syscall3 () at bionic/libc/arch-arm/bionic/atomics_arm.S:182
  8 Thread 751.761  __futex_syscall3 () at bionic/libc/arch-arm/bionic/atomics_arm.S:183
  7 Thread 751.760  __futex_syscall3 () at bionic/libc/arch-arm/bionic/atomics_arm.S:182
  6 Thread 751.759  __futex_syscall3 () at bionic/libc/arch-arm/bionic/atomics_arm.S:182
  5 Thread 751.758  0xffff0520 in ?? ()
  4 Thread 751.757  __futex_syscall3 () at bionic/libc/arch-arm/bionic/atomics_arm.S:182
  3 Thread 751.756  syscall () at bionic/libc/arch-arm/bionic/syscall.S:50
* 2 Thread 751.851  __futex_syscall3 () at bionic/libc/arch-arm/bionic/atomics_arm.S:182
  1 Thread 751.751  syscall () at bionic/libc/arch-arm/bionic/syscall.S:50
After freeze, killing camera app, and restarting it:
E/GeckoConsole(  751): Content JS INFO at app://system.gaiamobile.org/js/window_manager.js:507 in appendFrame: %%%%% Launching Camera as local
I/Gecko   (  751): getListOfCameras : get_number_of_cameras() returned 2
I/Gecko   (  751): mozilla::nsGonkCameraControl::nsGonkCameraControl(PRUint32, nsIThread*):114
I/Gecko   (  751): static void mozilla::GonkCameraHardware::ReleaseHandle(PRUint32): aHwHandle = 9, hw = 0x2da0828 (sHwHandle = 9)
I/Gecko   (  751): static void mozilla::GonkCameraHardware::ReleaseHandle(PRUint32): before: sHwHandle = 9
I/CameraHardwareSec(  751): void android::CameraHardwareSec::stopPreviewInternal() : preview not running, doing nothing
E/GeckoConsole(  751): [JavaScript Error: "content is null" {file: "chrome://global/content/BrowserElementChild.js" line: 169}]
Just after a freeze, while issuing a reboot, I can see:
$ adb logcat | grep "CameraHardware" | tee camera.txt
I/Gecko   (   77): static void mozilla::GonkCameraHardware::ReleaseHandle(PRUint32): aHwHandle = 8, hw = 0xcdf638 (sHwHandle = 8)
I/Gecko   (   77): static void mozilla::GonkCameraHardware::ReleaseHandle(PRUint32): before: sHwHandle = 8
I/CameraHardwareSec(   77): void android::CameraHardwareSec::stopPreviewInternal() : preview not running, doing nothing
Status: NEW → ASSIGNED
Assignee

Comment 15

7 years ago
When the image in the parent side is flushed we should also clear our queue in child side, because the image will never be returned.

The hard to find bug is always the dumb one :(
Assignee: mhabicher → kchen
Attachment #656156 - Flags: review?(jones.chris.g)
Assignee

Comment 16

7 years ago
Remove other changes that got included accidentally.
Attachment #656156 - Attachment is obsolete: true
Attachment #656156 - Flags: review?(jones.chris.g)
Attachment #656165 - Flags: review?(jones.chris.g)
Comment on attachment 656165 [details] [diff] [review]
Clear mImageQueue when Clear SharedImagePool v1.1

Hah!  Nice debugging work :).
Attachment #656165 - Flags: review?(jones.chris.g) → review+
Assignee

Comment 18

7 years ago
On second thought, this probably should not be put into ClearSharedImagePool. Call mImageQueue.Clear() explicitly.
Attachment #656165 - Attachment is obsolete: true
Attachment #656292 - Flags: review?(jones.chris.g)
Comment on attachment 656292 [details] [diff] [review]
Clear mImageQueue when setIdle or shuting down. v1.1

>diff --git a/content/media/MediaStreamGraph.cpp b/content/media/MediaStreamGraph.cpp
>--- a/content/media/MediaStreamGraph.cpp
>+++ b/content/media/MediaStreamGraph.cpp

I don't know anything about this code.

r=me on the layers stuff.
Attachment #656292 - Flags: review?(jones.chris.g) → review+
Assignee

Comment 20

7 years ago
Patch to commit
Attachment #656292 - Attachment is obsolete: true
Assignee

Updated

7 years ago
Assignee: nobody → kchen
Component: General → Graphics: Layers
Product: Boot2Gecko → Core
Version: unspecified → Trunk
Attached is a plot of the memory usage, with the proposed patch applied, while taking pictures. As you can see, memory usage still grows until I get b2g receiving a SIGKILL by kernel's OOM process.
Same as previous, but instead of manually firing the "adb shell cat /proc/meminfo", scripting it every second.
https://hg.mozilla.org/mozilla-central/rev/febcaf392a68
Status: ASSIGNED → RESOLVED
Closed: 7 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla18
You need to log in before you can comment on or make changes to this bug.