Closed Bug 781892 Opened 13 years ago Closed 12 years ago

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

Categories

(Core :: Graphics: Layers, defect)

ARM
Gonk (Firefox OS)
defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla18
blocking-basecamp +

People

(Reporter: mikeh, Assigned: kanru)

References

Details

Attachments

(3 files, 3 obsolete files)

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.
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
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)
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+
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+
Patch to commit
Attachment #656292 - Attachment is obsolete: true
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.
Status: ASSIGNED → RESOLVED
Closed: 12 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla18
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: