Closed
Bug 866463
Opened 12 years ago
Closed 12 years ago
Use of uninitialized value from imgStatusTracker::CalculateAndApplyDifference(imgStatusTracker*) (imgStatusTracker.cpp:563)
Categories
(Core :: Graphics: ImageLib, defect)
Core
Graphics: ImageLib
Tracking
()
RESOLVED
FIXED
mozilla23
People
(Reporter: ishikawa, Assigned: ishikawa)
Details
Attachments
(1 file)
1.02 KB,
patch
|
joe
:
review+
|
Details | Diff | Splinter Review |
Use of uninitialized value from
imgStatusTracker::CalculateAndApplyDifference(imgStatusTracker*) (imgStatusTracker.cpp:563)
Running thunderbird under valgrind while "make mozmill" test harness
of thunderbird is run revealed
new uninitialized value usage has been introduced in the last 10 days.
Background: I am trying to find out the cause of strange memory error
during GC which was noticed about 10 days ago, and I have been
checking the execution under memgrind after a refresh of source code
re-run the test. In contrast to the test I ran back in the middle of April I
now see a sudden increase of uninitialized value usage.
[I wish I could run this more often, but the whole run takes a full day
more or less (and I am running this with full DEBUG BUILD so that
I can co-relate the memory problem with the running of the program
more easily.), but I digress.]
In the summary below, note that because of the longer time out caused
by the the very slow nature of valgrind execution, some tests
inevitably timed out and could not be run successfully. So the errors summarized may vary from each run. But not this much for an identical binary,
for example. And the warning signature is something I have never seen before.
Summary created on April 15
Analyzing /FF-NEW/log84-memcheck-fixedstack.txt ...
========================================
Summary
========================================
6 Memcheck:Addr4 <=== some of these are GC bug
7 Memcheck:Cond <=== ****
17 Memcheck:Free
182 Memcheck:Leak
2 Memcheck:Param
4 Memcheck:Value4
Summary created Apri 18.
Analyzing /FF-NEW/log88-memcheck.txt ...
========================================
Summary
========================================
4 Memcheck:Addr4
10 Memcheck:Cond <==== ****
17 Memcheck:Free
180 Memcheck:Leak
2 Memcheck:Param
5 Memcheck:Value4
Summary from the run on April 28.
Analyzing /FF-NEW/log94-mozmill-memcheck.txt ...
========================================
Summary
========================================
3 Memcheck:Addr4
205 Memcheck:Cond <=== **** SUDDEN INCREASE
18 Memcheck:Free
189 Memcheck:Leak
2 Memcheck:Param
5 Memcheck:Value4
Typical stack trace of where the errors are attached at the end.
CalculateAndApplyDifference seems to reference an uninitialized value
from somewhere.
I am reporting this today, and will try to figure out where the
uninitialized value comes from next week.
I noticed that there is
Bug 850951 - Heap-use-after-free in imgStatusTracker::OnStopRequest
which may or may not be related to this bug, but since that bug
was discussed back in March, I don't think we are talking about the
same issue.
Version Info:
I am using comm-central for building TB locally,
/COMM-CENTRAL/comm-central
hg identify
6b23f3c319d8 qtip/tip/trychooser.patch
pwd
/COMM-CENTRAL/comm-central/mozilla
hg identify
ccfb2dea3b8e jsd_scpt-warning.patch/qtip/tip
Stacktrace:
(1)
==30114== Conditional jump or move depends on uninitialised value(s)
==30114== at 0x8E5C145: imgStatusTracker::CalculateAndApplyDifference(imgStatusTracker*) (imgStatusTracker.cpp:563)
==30114== by 0x8E2CD02: mozilla::image::RasterImage::FinishedSomeDecoding(mozilla::image::RasterImage::eShutdownIntent, mozilla::image::RasterImage::DecodeRequest*) (RasterImage.cpp:3467)
==30114== by 0x8E2C436: mozilla::image::RasterImage::DecodePool::DecodeUntilSizeAvailable(mozilla::image::RasterImage*) (RasterImage.cpp:3737)
==30114== by 0x8E31CB3: mozilla::image::RasterImage::RequestDecodeCore(mozilla::image::RasterImage::RequestDecodeType) (RasterImage.cpp:2769)
==30114== by 0x8E224BF: mozilla::image::RasterImage::StartDecoding() (RasterImage.cpp:2730)
==30114== by 0x8E531D8: imgRequest::OnDataAvailable(nsIRequest*, nsISupports*, nsIInputStream*, unsigned long long, unsigned int) (imgRequest.cpp:789)
==30114== by 0x8E3C020: ProxyListener::OnDataAvailable(nsIRequest*, nsISupports*, nsIInputStream*, unsigned long long, unsigned int) (imgLoader.cpp:2109)
==30114== by 0x8BC64A2: nsBaseChannel::OnDataAvailable(nsIRequest*, nsISupports*, nsIInputStream*, unsigned long long, unsigned int) (nsBaseChannel.cpp:765)
==30114== by 0x8BDB212: nsInputStreamPump::OnStateTransfer() (nsInputStreamPump.cpp:484)
==30114== by 0x8BDC82E: nsInputStreamPump::OnInputStreamReady(nsIAsyncInputStream*) (nsInputStreamPump.cpp:372)
==30114== by 0xAC12595: nsInputStreamReadyEvent::Run() (nsStreamUtils.cpp:82)
==30114== by 0xAC35546: nsThread::ProcessNextEvent(bool, bool*) (nsThread.cpp:627)
==30114== by 0xABC651E: NS_ProcessNextEvent(nsIThread*, bool) (nsThreadUtils.cpp:238)
==30114== by 0xAC35F98: nsThread::Shutdown() (nsThread.cpp:474)
==30114== by 0x8B6AFDE: nsRunnableMethodImpl<void (nsPACMan::*)(), true>::Run() (nsThreadUtils.h:350)
==30114== by 0xAC35546: nsThread::ProcessNextEvent(bool, bool*) (nsThread.cpp:627)
==30114== by 0xABC651E: NS_ProcessNextEvent(nsIThread*, bool) (nsThreadUtils.cpp:238)
==30114== by 0xA7C8304: mozilla::ipc::MessagePump::Run(base::MessagePump::Delegate*) (MessagePump.cpp:82)
==30114== by 0xAC842CA: MessageLoop::RunInternal() (message_loop.cc:219)
==30114== by 0xAC842E6: MessageLoop::RunHandler() (message_loop.cc:212)
==30114== by 0xAC84649: MessageLoop::Run() (message_loop.cc:186)
==30114== by 0xA14D8B0: nsBaseAppShell::Run() (nsBaseAppShell.cpp:163)
==30114== by 0x9E75B87: nsAppStartup::Run() (nsAppStartup.cpp:289)
==30114== by 0x8B5BAE0: XREMain::XRE_mainRun() (nsAppRunner.cpp:3878)
==30114== by 0x8B5D0B3: XREMain::XRE_main(int, char**, nsXREAppData const*) (nsAppRunner.cpp:3945)
==30114== by 0x8B5D481: XRE_main (nsAppRunner.cpp:4146)
==30114== by 0x8049B7C: main (nsMailApp.cpp:113)
==30114== Uninitialised value was created by a heap allocation
==30114== at 0x40273B8: malloc (vg_replace_malloc.c:270)
==30114== by 0x4A94EB3: moz_xmalloc (mozalloc.cpp:54)
==30114== by 0x8E5F030: imgStatusTracker::CloneForRecording() (mozalloc.h:201)
==30114== by 0x8E23CEF: mozilla::image::RasterImage::DecodeRequest::DecodeRequest(mozilla::image::RasterImage*) (RasterImage.h:401)
==30114== by 0x8E2F2E7: mozilla::image::RasterImage::InitDecoder(bool, bool) (RasterImage.cpp:2560)
==30114== by 0x8E2FD36: mozilla::image::RasterImage::Init(char const*, unsigned int) (RasterImage.cpp:517)
==30114== by 0x8E1BE48: mozilla::image::ImageFactory::CreateRasterImage(nsIRequest*, imgStatusTracker*, nsCString const&, nsIURI*, unsigned int, unsigned int) (ImageFactory.cpp:189)
==30114== by 0x8E1C1D5: mozilla::image::ImageFactory::CreateImage(nsIRequest*, imgStatusTracker*, nsCString const&, nsIURI*, bool, unsigned int) (ImageFactory.cpp:106)
==30114== by 0x8E52878: imgRequest::OnDataAvailable(nsIRequest*, nsISupports*, nsIInputStream*, unsigned long long, unsigned int) (imgRequest.cpp:768)
==30114== by 0x8E3C020: ProxyListener::OnDataAvailable(nsIRequest*, nsISupports*, nsIInputStream*, unsigned long long, unsigned int) (imgLoader.cpp:2109)
==30114== by 0x8BC64A2: nsBaseChannel::OnDataAvailable(nsIRequest*, nsISupports*, nsIInputStream*, unsigned long long, unsigned int) (nsBaseChannel.cpp:765)
==30114== by 0x8BDB212: nsInputStreamPump::OnStateTransfer() (nsInputStreamPump.cpp:484)
==30114== by 0x8BDC82E: nsInputStreamPump::OnInputStreamReady(nsIAsyncInputStream*) (nsInputStreamPump.cpp:372)
==30114== by 0xAC12595: nsInputStreamReadyEvent::Run() (nsStreamUtils.cpp:82)
==30114== by 0xAC35546: nsThread::ProcessNextEvent(bool, bool*) (nsThread.cpp:627)
==30114== by 0xABC651E: NS_ProcessNextEvent(nsIThread*, bool) (nsThreadUtils.cpp:238)
==30114== by 0xAC35F98: nsThread::Shutdown() (nsThread.cpp:474)
==30114== by 0x8B6AFDE: nsRunnableMethodImpl<void (nsPACMan::*)(), true>::Run() (nsThreadUtils.h:350)
==30114== by 0xAC35546: nsThread::ProcessNextEvent(bool, bool*) (nsThread.cpp:627)
==30114== by 0xABC651E: NS_ProcessNextEvent(nsIThread*, bool) (nsThreadUtils.cpp:238)
==30114== by 0xA7C8304: mozilla::ipc::MessagePump::Run(base::MessagePump::Delegate*) (MessagePump.cpp:82)
==30114== by 0xAC842CA: MessageLoop::RunInternal() (message_loop.cc:219)
==30114== by 0xAC842E6: MessageLoop::RunHandler() (message_loop.cc:212)
==30114== by 0xAC84649: MessageLoop::Run() (message_loop.cc:186)
==30114== by 0xA14D8B0: nsBaseAppShell::Run() (nsBaseAppShell.cpp:163)
==30114== by 0x9E75B87: nsAppStartup::Run() (nsAppStartup.cpp:289)
==30114== by 0x8B5BAE0: XREMain::XRE_mainRun() (nsAppRunner.cpp:3878)
==30114== by 0x8B5D0B3: XREMain::XRE_main(int, char**, nsXREAppData const*) (nsAppRunner.cpp:3945)
==30114== by 0x8B5D481: XRE_main (nsAppRunner.cpp:4146)
==30114== by 0x8049B7C: main (nsMailApp.cpp:113)
==30114==
(1-b)
This is similar (1), but called from a slightly different placd (4th entry in the stack.)
==30297== by 0x8E2C452: mozilla::image::RasterImage::DecodePool::DecodeUntilSizeAvailable(mozilla::image::RasterImage*) (RasterImage.cpp:3719)
(Entry (1) above had different line. (3737 vs 3719)
==30114== by 0x8E2C436: mozilla::image::RasterImage::DecodePool::DecodeUntilSizeAvailable(mozilla::image::RasterImage*) (RasterImage.cpp:3737)
==30297== Conditional jump or move depends on uninitialised value(s)
==30297== at 0x8E5BFDA: imgStatusTracker::CalculateAndApplyDifference(imgStatusTracker*) (imgStatusTracker.cpp:546)
==30297== by 0x8E2CD02: mozilla::image::RasterImage::FinishedSomeDecoding(mozilla::image::RasterImage::eShutdownIntent, mozilla::image::RasterImage::DecodeRequest*) (RasterImage.cpp:3467)
==30297== by 0x8E2C452: mozilla::image::RasterImage::DecodePool::DecodeUntilSizeAvailable(mozilla::image::RasterImage*) (RasterImage.cpp:3719)
==30297== by 0x8E30E28: mozilla::image::RasterImage::DoImageDataComplete() (RasterImage.cpp:1757)
==30297== by 0x8E31115: mozilla::image::RasterImage::OnImageDataComplete(nsIRequest*, nsISupports*, tag_nsresult, bool) (RasterImage.cpp:1806)
==30297== by 0x8E4E991: imgRequest::OnStopRequest(nsIRequest*, nsISupports*, tag_nsresult) (imgRequest.cpp:616)
==30297== by 0x8E3D7E9: ProxyListener::OnStopRequest(nsIRequest*, nsISupports*, tag_nsresult) (imgLoader.cpp:2095)
==30297== by 0x8BC8BCD: nsBaseChannel::OnStopRequest(nsIRequest*, nsISupports*, tag_nsresult) (nsBaseChannel.cpp:737)
==30297== by 0x8BDC3AD: nsInputStreamPump::OnStateStop() (nsInputStreamPump.cpp:555)
==30297== by 0x8BDC7BD: nsInputStreamPump::OnInputStreamReady(nsIAsyncInputStream*) (nsInputStreamPump.cpp:375)
==30297== by 0xAC12595: nsInputStreamReadyEvent::Run() (nsStreamUtils.cpp:82)
==30297== by 0xAC35546: nsThread::ProcessNextEvent(bool, bool*) (nsThread.cpp:627)
==30297== by 0xABC651E: NS_ProcessNextEvent(nsIThread*, bool) (nsThreadUtils.cpp:238)
==30297== by 0xA7C8304: mozilla::ipc::MessagePump::Run(base::MessagePump::Delegate*) (MessagePump.cpp:82)
==30297== by 0xAC842CA: MessageLoop::RunInternal() (message_loop.cc:219)
==30297== by 0xAC842E6: MessageLoop::RunHandler() (message_loop.cc:212)
==30297== by 0xAC84649: MessageLoop::Run() (message_loop.cc:186)
==30297== by 0xA14D8B0: nsBaseAppShell::Run() (nsBaseAppShell.cpp:163)
==30297== by 0x9E75B87: nsAppStartup::Run() (nsAppStartup.cpp:289)
==30297== by 0x8B5BAE0: XREMain::XRE_mainRun() (nsAppRunner.cpp:3878)
==30297== by 0x8B5D0B3: XREMain::XRE_main(int, char**, nsXREAppData const*) (nsAppRunner.cpp:3945)
==30297== by 0x8B5D481: XRE_main (nsAppRunner.cpp:4146)
==30297== by 0x8049B7C: main (nsMailApp.cpp:113)
==30297== Uninitialised value was created by a heap allocation
==30297== at 0x40273B8: malloc (vg_replace_malloc.c:270)
==30297== by 0x4A94EB3: moz_xmalloc (mozalloc.cpp:54)
==30297== by 0x8E5F030: imgStatusTracker::CloneForRecording() (mozalloc.h:201)
==30297== by 0x8E23CEF: mozilla::image::RasterImage::DecodeRequest::DecodeRequest(mozilla::image::RasterImage*) (RasterImage.h:401)
==30297== by 0x8E2F2E7: mozilla::image::RasterImage::InitDecoder(bool, bool) (RasterImage.cpp:2560)
==30297== by 0x8E2FD36: mozilla::image::RasterImage::Init(char const*, unsigned int) (RasterImage.cpp:517)
==30297== by 0x8E1BE48: mozilla::image::ImageFactory::CreateRasterImage(nsIRequest*, imgStatusTracker*, nsCString const&, nsIURI*, unsigned int, unsigned int) (ImageFactory.cpp:189)
==30297== by 0x8E1C1D5: mozilla::image::ImageFactory::CreateImage(nsIRequest*, imgStatusTracker*, nsCString const&, nsIURI*, bool, unsigned int) (ImageFactory.cpp:106)
==30297== by 0x8E52878: imgRequest::OnDataAvailable(nsIRequest*, nsISupports*, nsIInputStream*, unsigned long long, unsigned int) (imgRequest.cpp:768)
==30297== by 0x8E3C020: ProxyListener::OnDataAvailable(nsIRequest*, nsISupports*, nsIInputStream*, unsigned long long, unsigned int) (imgLoader.cpp:2109)
==30297== by 0x8BC64A2: nsBaseChannel::OnDataAvailable(nsIRequest*, nsISupports*, nsIInputStream*, unsigned long long, unsigned int) (nsBaseChannel.cpp:765)
==30297== by 0x8BDB212: nsInputStreamPump::OnStateTransfer() (nsInputStreamPump.cpp:484)
==30297== by 0x8BDC82E: nsInputStreamPump::OnInputStreamReady(nsIAsyncInputStream*) (nsInputStreamPump.cpp:372)
==30297== by 0xAC12595: nsInputStreamReadyEvent::Run() (nsStreamUtils.cpp:82)
==30297== by 0xAC35546: nsThread::ProcessNextEvent(bool, bool*) (nsThread.cpp:627)
==30297== by 0xABC651E: NS_ProcessNextEvent(nsIThread*, bool) (nsThreadUtils.cpp:238)
==30297== by 0xA7C8304: mozilla::ipc::MessagePump::Run(base::MessagePump::Delegate*) (MessagePump.cpp:82)
==30297== by 0xAC842CA: MessageLoop::RunInternal() (message_loop.cc:219)
==30297== by 0xAC842E6: MessageLoop::RunHandler() (message_loop.cc:212)
==30297== by 0xAC84649: MessageLoop::Run() (message_loop.cc:186)
==30297== by 0xA14D8B0: nsBaseAppShell::Run() (nsBaseAppShell.cpp:163)
==30297== by 0x9E75B87: nsAppStartup::Run() (nsAppStartup.cpp:289)
==30297== by 0x8B5BAE0: XREMain::XRE_mainRun() (nsAppRunner.cpp:3878)
==30297== by 0x8B5D0B3: XREMain::XRE_main(int, char**, nsXREAppData const*) (nsAppRunner.cpp:3945)
==30297== by 0x8B5D481: XRE_main (nsAppRunner.cpp:4146)
==30297== by 0x8049B7C: main (nsMailApp.cpp:113)
==30297==
(2) This and the following (3) shows calls from OnStartRequest, and OnImageDataComplete
==30114== Conditional jump or move depends on uninitialised value(s)
==30114== at 0x8E5C010: imgStatusTracker::CalculateAndApplyDifference(imgStatusTracker*) (imgStatusTracker.cpp:563)
==30114== by 0x8E390EB: mozilla::image::VectorImage::OnStartRequest(nsIRequest*, nsISupports*) (VectorImage.cpp:784)
==30114== by 0x8E1B62C: mozilla::image::ImageFactory::CreateVectorImage(nsIRequest*, imgStatusTracker*, nsCString const&, nsIURI*, unsigned int, unsigned int) (ImageFactory.cpp:237)
==30114== by 0x8E1C217: mozilla::image::ImageFactory::CreateImage(nsIRequest*, imgStatusTracker*, nsCString const&, nsIURI*, bool, unsigned int) (ImageFactory.cpp:103)
==30114== by 0x8E52878: imgRequest::OnDataAvailable(nsIRequest*, nsISupports*, nsIInputStream*, unsigned long long, unsigned int) (imgRequest.cpp:768)
==30114== by 0x8E3C020: ProxyListener::OnDataAvailable(nsIRequest*, nsISupports*, nsIInputStream*, unsigned long long, unsigned int) (imgLoader.cpp:2109)
==30114== by 0x8BC64A2: nsBaseChannel::OnDataAvailable(nsIRequest*, nsISupports*, nsIInputStream*, unsigned long long, unsigned int) (nsBaseChannel.cpp:765)
==30114== by 0x8BDB212: nsInputStreamPump::OnStateTransfer() (nsInputStreamPump.cpp:484)
==30114== by 0x8BDC82E: nsInputStreamPump::OnInputStreamReady(nsIAsyncInputStream*) (nsInputStreamPump.cpp:372)
==30114== by 0xAC12595: nsInputStreamReadyEvent::Run() (nsStreamUtils.cpp:82)
==30114== by 0xAC35546: nsThread::ProcessNextEvent(bool, bool*) (nsThread.cpp:627)
==30114== by 0xAC61A63: NS_InvokeByIndex (in /TEST-MAIL-DIR/objdir-tb3/mozilla/toolkit/library/libxul.so)
==30114== by 0x9CF77CB: CallMethodHelper::Call() (XPCWrappedNative.cpp:2945)
==30114== by 0x9CF81BA: XPCWrappedNative::CallMethod(XPCCallContext&, XPCWrappedNative::CallMode) (XPCWrappedNative.cpp:2246)
==30114== by 0x9CFFBE3: XPC_WN_CallMethod(JSContext*, unsigned int, JS::Value*) (XPCWrappedNativeJSOps.cpp:1483)
==30114== by 0xB29ACEB: js::CallJSNative(JSContext*, int (*)(JSContext*, unsigned int, JS::Value*), JS::CallArgs const&) (jscntxtinlines.h:337)
==30114== by 0xB2AAC29: js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct) (jsinterp.cpp:407)
==30114== by 0xB2A358B: js::Interpret(JSContext*, js::StackFrame*, js::InterpMode, bool) (jsinterp.cpp:2396)
==30114== by 0xB2A9D2E: js::RunScript(JSContext*, js::StackFrame*) (jsinterp.cpp:364)
==30114== by 0xB2AAB35: js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct) (jsinterp.cpp:421)
==30114== by 0xB2AB4AB: js::Invoke(JSContext*, JS::Value const&, JS::Value const&, unsigned int, JS::Value*, JS::Value*) (jsinterp.h:134)
==30114== by 0xB2F9672: js::DirectProxyHandler::call(JSContext*, JS::Handle<JSObject*>, JS::CallArgs const&) (jsproxy.cpp:481)
==30114== by 0xB3936BA: js::CrossCompartmentWrapper::call(JSContext*, JS::Handle<JSObject*>, JS::CallArgs const&) (jswrapper.cpp:453)
==30114== by 0xB2FC977: js::Proxy::call(JSContext*, JS::Handle<JSObject*>, JS::CallArgs const&) (jsproxy.cpp:2613)
==30114== by 0xB2FCA6F: proxy_Call(JSContext*, unsigned int, JS::Value*) (jsproxy.cpp:3177)
==30114== by 0xB29ACEB: js::CallJSNative(JSContext*, int (*)(JSContext*, unsigned int, JS::Value*), JS::CallArgs const&) (jscntxtinlines.h:337)
==30114== by 0xB2AAD7E: js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct) (jsinterp.cpp:400)
==30114== by 0xB2A358B: js::Interpret(JSContext*, js::StackFrame*, js::InterpMode, bool) (jsinterp.cpp:2396)
==30114== by 0xB2A9D2E: js::RunScript(JSContext*, js::StackFrame*) (jsinterp.cpp:364)
==30114== by 0xB2AAB35: js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct) (jsinterp.cpp:421)
==30114== by 0xB24FB16: js_fun_apply(JSContext*, unsigned int, JS::Value*) (jsinterp.h:134)
==30114== by 0xB29ACEB: js::CallJSNative(JSContext*, int (*)(JSContext*, unsigned int, JS::Value*), JS::CallArgs const&) (jscntxtinlines.h:337)
==30114== by 0xB2AAC29: js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct) (jsinterp.cpp:407)
==30114== by 0xB2AB4AB: js::Invoke(JSContext*, JS::Value const&, JS::Value const&, unsigned int, JS::Value*, JS::Value*) (jsinterp.h:134)
==30114== by 0xB2F9672: js::DirectProxyHandler::call(JSContext*, JS::Handle<JSObject*>, JS::CallArgs const&) (jsproxy.cpp:481)
==30114== by 0xB3936BA: js::CrossCompartmentWrapper::call(JSContext*, JS::Handle<JSObject*>, JS::CallArgs const&) (jswrapper.cpp:453)
==30114== by 0xB2FC977: js::Proxy::call(JSContext*, JS::Handle<JSObject*>, JS::CallArgs const&) (jsproxy.cpp:2613)
==30114== by 0xB2FCA6F: proxy_Call(JSContext*, unsigned int, JS::Value*) (jsproxy.cpp:3177)
==30114== by 0xB29ACEB: js::CallJSNative(JSContext*, int (*)(JSContext*, unsigned int, JS::Value*), JS::CallArgs const&) (jscntxtinlines.h:337)
==30114== by 0xB2AAD7E: js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct) (jsinterp.cpp:400)
==30114== by 0xB2A358B: js::Interpret(JSContext*, js::StackFrame*, js::InterpMode, bool) (jsinterp.cpp:2396)
==30114== by 0xB2A9D2E: js::RunScript(JSContext*, js::StackFrame*) (jsinterp.cpp:364)
==30114== by 0xB2AAB35: js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct) (jsinterp.cpp:421)
==30114== by 0xB2AB4AB: js::Invoke(JSContext*, JS::Value const&, JS::Value const&, unsigned int, JS::Value*, JS::Value*) (jsinterp.h:134)
==30114== by 0xB2F9672: js::DirectProxyHandler::call(JSContext*, JS::Handle<JSObject*>, JS::CallArgs const&) (jsproxy.cpp:481)
==30114== by 0xB3936BA: js::CrossCompartmentWrapper::call(JSContext*, JS::Handle<JSObject*>, JS::CallArgs const&) (jswrapper.cpp:453)
==30114== by 0xB2FC977: js::Proxy::call(JSContext*, JS::Handle<JSObject*>, JS::CallArgs const&) (jsproxy.cpp:2613)
==30114== by 0xB2FCA6F: proxy_Call(JSContext*, unsigned int, JS::Value*) (jsproxy.cpp:3177)
==30114== by 0xB29ACEB: js::CallJSNative(JSContext*, int (*)(JSContext*, unsigned int, JS::Value*), JS::CallArgs const&) (jscntxtinlines.h:337)
==30114== by 0xB2AAD7E: js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct) (jsinterp.cpp:400)
==30114== Uninitialised value was created by a heap allocation
==30114== at 0x40273B8: malloc (vg_replace_malloc.c:270)
==30114== by 0x4A94EB3: moz_xmalloc (mozalloc.cpp:54)
==30114== by 0x8E5F030: imgStatusTracker::CloneForRecording() (mozalloc.h:201)
==30114== by 0x8E390AE: mozilla::image::VectorImage::OnStartRequest(nsIRequest*, nsISupports*) (VectorImage.cpp:781)
==30114== by 0x8E1B62C: mozilla::image::ImageFactory::CreateVectorImage(nsIRequest*, imgStatusTracker*, nsCString const&, nsIURI*, unsigned int, unsigned int) (ImageFactory.cpp:237)
==30114== by 0x8E1C217: mozilla::image::ImageFactory::CreateImage(nsIRequest*, imgStatusTracker*, nsCString const&, nsIURI*, bool, unsigned int) (ImageFactory.cpp:103)
==30114== by 0x8E52878: imgRequest::OnDataAvailable(nsIRequest*, nsISupports*, nsIInputStream*, unsigned long long, unsigned int) (imgRequest.cpp:768)
==30114== by 0x8E3C020: ProxyListener::OnDataAvailable(nsIRequest*, nsISupports*, nsIInputStream*, unsigned long long, unsigned int) (imgLoader.cpp:2109)
==30114== by 0x8BC64A2: nsBaseChannel::OnDataAvailable(nsIRequest*, nsISupports*, nsIInputStream*, unsigned long long, unsigned int) (nsBaseChannel.cpp:765)
==30114== by 0x8BDB212: nsInputStreamPump::OnStateTransfer() (nsInputStreamPump.cpp:484)
==30114== by 0x8BDC82E: nsInputStreamPump::OnInputStreamReady(nsIAsyncInputStream*) (nsInputStreamPump.cpp:372)
==30114== by 0xAC12595: nsInputStreamReadyEvent::Run() (nsStreamUtils.cpp:82)
==30114== by 0xAC35546: nsThread::ProcessNextEvent(bool, bool*) (nsThread.cpp:627)
==30114== by 0xAC61A63: NS_InvokeByIndex (in /TEST-MAIL-DIR/objdir-tb3/mozilla/toolkit/library/libxul.so)
==30114== by 0x9CF77CB: CallMethodHelper::Call() (XPCWrappedNative.cpp:2945)
==30114== by 0x9CF81BA: XPCWrappedNative::CallMethod(XPCCallContext&, XPCWrappedNative::CallMode) (XPCWrappedNative.cpp:2246)
==30114== by 0x9CFFBE3: XPC_WN_CallMethod(JSContext*, unsigned int, JS::Value*) (XPCWrappedNativeJSOps.cpp:1483)
==30114== by 0xB29ACEB: js::CallJSNative(JSContext*, int (*)(JSContext*, unsigned int, JS::Value*), JS::CallArgs const&) (jscntxtinlines.h:337)
==30114== by 0xB2AAC29: js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct) (jsinterp.cpp:407)
==30114== by 0xB2A358B: js::Interpret(JSContext*, js::StackFrame*, js::InterpMode, bool) (jsinterp.cpp:2396)
==30114== by 0xB2A9D2E: js::RunScript(JSContext*, js::StackFrame*) (jsinterp.cpp:364)
==30114== by 0xB2AAB35: js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct) (jsinterp.cpp:421)
==30114== by 0xB2AB4AB: js::Invoke(JSContext*, JS::Value const&, JS::Value const&, unsigned int, JS::Value*, JS::Value*) (jsinterp.h:134)
==30114== by 0xB2F9672: js::DirectProxyHandler::call(JSContext*, JS::Handle<JSObject*>, JS::CallArgs const&) (jsproxy.cpp:481)
==30114== by 0xB3936BA: js::CrossCompartmentWrapper::call(JSContext*, JS::Handle<JSObject*>, JS::CallArgs const&) (jswrapper.cpp:453)
==30114== by 0xB2FC977: js::Proxy::call(JSContext*, JS::Handle<JSObject*>, JS::CallArgs const&) (jsproxy.cpp:2613)
==30114== by 0xB2FCA6F: proxy_Call(JSContext*, unsigned int, JS::Value*) (jsproxy.cpp:3177)
==30114== by 0xB29ACEB: js::CallJSNative(JSContext*, int (*)(JSContext*, unsigned int, JS::Value*), JS::CallArgs const&) (jscntxtinlines.h:337)
==30114== by 0xB2AAD7E: js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct) (jsinterp.cpp:400)
==30114== by 0xB2A358B: js::Interpret(JSContext*, js::StackFrame*, js::InterpMode, bool) (jsinterp.cpp:2396)
==30114== by 0xB2A9D2E: js::RunScript(JSContext*, js::StackFrame*) (jsinterp.cpp:364)
==30114== by 0xB2AAB35: js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct) (jsinterp.cpp:421)
==30114== by 0xB24FB16: js_fun_apply(JSContext*, unsigned int, JS::Value*) (jsinterp.h:134)
==30114== by 0xB29ACEB: js::CallJSNative(JSContext*, int (*)(JSContext*, unsigned int, JS::Value*), JS::CallArgs const&) (jscntxtinlines.h:337)
==30114== by 0xB2AAC29: js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct) (jsinterp.cpp:407)
==30114== by 0xB2AB4AB: js::Invoke(JSContext*, JS::Value const&, JS::Value const&, unsigned int, JS::Value*, JS::Value*) (jsinterp.h:134)
==30114== by 0xB2F9672: js::DirectProxyHandler::call(JSContext*, JS::Handle<JSObject*>, JS::CallArgs const&) (jsproxy.cpp:481)
==30114== by 0xB3936BA: js::CrossCompartmentWrapper::call(JSContext*, JS::Handle<JSObject*>, JS::CallArgs const&) (jswrapper.cpp:453)
==30114== by 0xB2FC977: js::Proxy::call(JSContext*, JS::Handle<JSObject*>, JS::CallArgs const&) (jsproxy.cpp:2613)
==30114== by 0xB2FCA6F: proxy_Call(JSContext*, unsigned int, JS::Value*) (jsproxy.cpp:3177)
==30114== by 0xB29ACEB: js::CallJSNative(JSContext*, int (*)(JSContext*, unsigned int, JS::Value*), JS::CallArgs const&) (jscntxtinlines.h:337)
==30114== by 0xB2AAD7E: js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct) (jsinterp.cpp:400)
==30114== by 0xB2A358B: js::Interpret(JSContext*, js::StackFrame*, js::InterpMode, bool) (jsinterp.cpp:2396)
==30114== by 0xB2A9D2E: js::RunScript(JSContext*, js::StackFrame*) (jsinterp.cpp:364)
==30114== by 0xB2AAB35: js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct) (jsinterp.cpp:421)
==30114== by 0xB2AB4AB: js::Invoke(JSContext*, JS::Value const&, JS::Value const&, unsigned int, JS::Value*, JS::Value*) (jsinterp.h:134)
==30114== by 0xB2F9672: js::DirectProxyHandler::call(JSContext*, JS::Handle<JSObject*>, JS::CallArgs const&) (jsproxy.cpp:481)
==30114== by 0xB3936BA: js::CrossCompartmentWrapper::call(JSContext*, JS::Handle<JSObject*>, JS::CallArgs const&) (jswrapper.cpp:453)
==30114== by 0xB2FC977: js::Proxy::call(JSContext*, JS::Handle<JSObject*>, JS::CallArgs const&) (jsproxy.cpp:2613)
==30114== by 0xB2FCA6F: proxy_Call(JSContext*, unsigned int, JS::Value*) (jsproxy.cpp:3177)
==30114==
(3)
==30297== Conditional jump or move depends on uninitialised value(s)
==30297== at 0x8E5BFDA: imgStatusTracker::CalculateAndApplyDifference(imgStatusTracker*) (imgStatusTracker.cpp:546)
==30297== by 0x8E36096: mozilla::image::VectorImage::OnImageDataComplete(nsIRequest*, nsISupports*, tag_nsresult, bool) (VectorImage.cpp:388)
==30297== by 0x8E4E991: imgRequest::OnStopRequest(nsIRequest*, nsISupports*, tag_nsresult) (imgRequest.cpp:616)
==30297== by 0x8E3D7E9: ProxyListener::OnStopRequest(nsIRequest*, nsISupports*, tag_nsresult) (imgLoader.cpp:2095)
==30297== by 0x8BC8BCD: nsBaseChannel::OnStopRequest(nsIRequest*, nsISupports*, tag_nsresult) (nsBaseChannel.cpp:737)
==30297== by 0x8BDC3AD: nsInputStreamPump::OnStateStop() (nsInputStreamPump.cpp:555)
==30297== by 0x8BDC7BD: nsInputStreamPump::OnInputStreamReady(nsIAsyncInputStream*) (nsInputStreamPump.cpp:375)
==30297== by 0xAC12595: nsInputStreamReadyEvent::Run() (nsStreamUtils.cpp:82)
==30297== by 0xAC35546: nsThread::ProcessNextEvent(bool, bool*) (nsThread.cpp:627)
==30297== by 0xAC61A63: NS_InvokeByIndex (in /TEST-MAIL-DIR/objdir-tb3/mozilla/toolkit/library/libxul.so)
==30297== by 0x9CF77CB: CallMethodHelper::Call() (XPCWrappedNative.cpp:2945)
==30297== by 0x9CF81BA: XPCWrappedNative::CallMethod(XPCCallContext&, XPCWrappedNative::CallMode) (XPCWrappedNative.cpp:2246)
==30297== by 0x9CFFBE3: XPC_WN_CallMethod(JSContext*, unsigned int, JS::Value*) (XPCWrappedNativeJSOps.cpp:1483)
==30297== by 0xB29ACEB: js::CallJSNative(JSContext*, int (*)(JSContext*, unsigned int, JS::Value*), JS::CallArgs const&) (jscntxtinlines.h:337)
==30297== by 0xB2AAC29: js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct) (jsinterp.cpp:407)
==30297== by 0xB2A358B: js::Interpret(JSContext*, js::StackFrame*, js::InterpMode, bool) (jsinterp.cpp:2396)
==30297== by 0xB2A9D2E: js::RunScript(JSContext*, js::StackFrame*) (jsinterp.cpp:364)
==30297== by 0xB2AAB35: js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct) (jsinterp.cpp:421)
==30297== by 0xB2AB4AB: js::Invoke(JSContext*, JS::Value const&, JS::Value const&, unsigned int, JS::Value*, JS::Value*) (jsinterp.h:134)
==30297== by 0xB2F9672: js::DirectProxyHandler::call(JSContext*, JS::Handle<JSObject*>, JS::CallArgs const&) (jsproxy.cpp:481)
==30297== by 0xB3936BA: js::CrossCompartmentWrapper::call(JSContext*, JS::Handle<JSObject*>, JS::CallArgs const&) (jswrapper.cpp:453)
==30297== by 0xB2FC977: js::Proxy::call(JSContext*, JS::Handle<JSObject*>, JS::CallArgs const&) (jsproxy.cpp:2613)
==30297== by 0xB2FCA6F: proxy_Call(JSContext*, unsigned int, JS::Value*) (jsproxy.cpp:3177)
==30297== by 0xB29ACEB: js::CallJSNative(JSContext*, int (*)(JSContext*, unsigned int, JS::Value*), JS::CallArgs const&) (jscntxtinlines.h:337)
==30297== by 0xB2AAD7E: js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct) (jsinterp.cpp:400)
==30297== by 0xB2A358B: js::Interpret(JSContext*, js::StackFrame*, js::InterpMode, bool) (jsinterp.cpp:2396)
==30297== by 0xB2A9D2E: js::RunScript(JSContext*, js::StackFrame*) (jsinterp.cpp:364)
==30297== by 0xB2AAB35: js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct) (jsinterp.cpp:421)
==30297== by 0xB24FB16: js_fun_apply(JSContext*, unsigned int, JS::Value*) (jsinterp.h:134)
==30297== by 0xB29ACEB: js::CallJSNative(JSContext*, int (*)(JSContext*, unsigned int, JS::Value*), JS::CallArgs const&) (jscntxtinlines.h:337)
==30297== by 0xB2AAC29: js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct) (jsinterp.cpp:407)
==30297== by 0xB2AB4AB: js::Invoke(JSContext*, JS::Value const&, JS::Value const&, unsigned int, JS::Value*, JS::Value*) (jsinterp.h:134)
==30297== by 0xB2F9672: js::DirectProxyHandler::call(JSContext*, JS::Handle<JSObject*>, JS::CallArgs const&) (jsproxy.cpp:481)
==30297== by 0xB3936BA: js::CrossCompartmentWrapper::call(JSContext*, JS::Handle<JSObject*>, JS::CallArgs const&) (jswrapper.cpp:453)
==30297== by 0xB2FC977: js::Proxy::call(JSContext*, JS::Handle<JSObject*>, JS::CallArgs const&) (jsproxy.cpp:2613)
==30297== by 0xB2FCA6F: proxy_Call(JSContext*, unsigned int, JS::Value*) (jsproxy.cpp:3177)
==30297== by 0xB29ACEB: js::CallJSNative(JSContext*, int (*)(JSContext*, unsigned int, JS::Value*), JS::CallArgs const&) (jscntxtinlines.h:337)
==30297== by 0xB2AAD7E: js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct) (jsinterp.cpp:400)
==30297== by 0xB2A358B: js::Interpret(JSContext*, js::StackFrame*, js::InterpMode, bool) (jsinterp.cpp:2396)
==30297== by 0xB2A9D2E: js::RunScript(JSContext*, js::StackFrame*) (jsinterp.cpp:364)
==30297== by 0xB2AAB35: js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct) (jsinterp.cpp:421)
==30297== by 0xB2AB4AB: js::Invoke(JSContext*, JS::Value const&, JS::Value const&, unsigned int, JS::Value*, JS::Value*) (jsinterp.h:134)
==30297== by 0xB2F9672: js::DirectProxyHandler::call(JSContext*, JS::Handle<JSObject*>, JS::CallArgs const&) (jsproxy.cpp:481)
==30297== by 0xB3936BA: js::CrossCompartmentWrapper::call(JSContext*, JS::Handle<JSObject*>, JS::CallArgs const&) (jswrapper.cpp:453)
==30297== by 0xB2FC977: js::Proxy::call(JSContext*, JS::Handle<JSObject*>, JS::CallArgs const&) (jsproxy.cpp:2613)
==30297== by 0xB2FCA6F: proxy_Call(JSContext*, unsigned int, JS::Value*) (jsproxy.cpp:3177)
==30297== by 0xB29ACEB: js::CallJSNative(JSContext*, int (*)(JSContext*, unsigned int, JS::Value*), JS::CallArgs const&) (jscntxtinlines.h:337)
==30297== by 0xB2AAD7E: js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct) (jsinterp.cpp:400)
==30297== by 0xB2A358B: js::Interpret(JSContext*, js::StackFrame*, js::InterpMode, bool) (jsinterp.cpp:2396)
==30297== by 0xB2A9D2E: js::RunScript(JSContext*, js::StackFrame*) (jsinterp.cpp:364)
==30297== Uninitialised value was created by a heap allocation
==30297== at 0x40273B8: malloc (vg_replace_malloc.c:270)
==30297== by 0x4A94EB3: moz_xmalloc (mozalloc.cpp:54)
==30297== by 0x8E5F030: imgStatusTracker::CloneForRecording() (mozalloc.h:201)
==30297== by 0x8E3601F: mozilla::image::VectorImage::OnImageDataComplete(nsIRequest*, nsISupports*, tag_nsresult, bool) (VectorImage.cpp:385)
==30297== by 0x8E4E991: imgRequest::OnStopRequest(nsIRequest*, nsISupports*, tag_nsresult) (imgRequest.cpp:616)
==30297== by 0x8E3D7E9: ProxyListener::OnStopRequest(nsIRequest*, nsISupports*, tag_nsresult) (imgLoader.cpp:2095)
==30297== by 0x8BC8BCD: nsBaseChannel::OnStopRequest(nsIRequest*, nsISupports*, tag_nsresult) (nsBaseChannel.cpp:737)
==30297== by 0x8BDC3AD: nsInputStreamPump::OnStateStop() (nsInputStreamPump.cpp:555)
==30297== by 0x8BDC7BD: nsInputStreamPump::OnInputStreamReady(nsIAsyncInputStream*) (nsInputStreamPump.cpp:375)
==30297== by 0xAC12595: nsInputStreamReadyEvent::Run() (nsStreamUtils.cpp:82)
==30297== by 0xAC35546: nsThread::ProcessNextEvent(bool, bool*) (nsThread.cpp:627)
==30297== by 0xAC61A63: NS_InvokeByIndex (in /TEST-MAIL-DIR/objdir-tb3/mozilla/toolkit/library/libxul.so)
==30297== by 0x9CF77CB: CallMethodHelper::Call() (XPCWrappedNative.cpp:2945)
==30297== by 0x9CF81BA: XPCWrappedNative::CallMethod(XPCCallContext&, XPCWrappedNative::CallMode) (XPCWrappedNative.cpp:2246)
==30297== by 0x9CFFBE3: XPC_WN_CallMethod(JSContext*, unsigned int, JS::Value*) (XPCWrappedNativeJSOps.cpp:1483)
==30297== by 0xB29ACEB: js::CallJSNative(JSContext*, int (*)(JSContext*, unsigned int, JS::Value*), JS::CallArgs const&) (jscntxtinlines.h:337)
==30297== by 0xB2AAC29: js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct) (jsinterp.cpp:407)
==30297== by 0xB2A358B: js::Interpret(JSContext*, js::StackFrame*, js::InterpMode, bool) (jsinterp.cpp:2396)
==30297== by 0xB2A9D2E: js::RunScript(JSContext*, js::StackFrame*) (jsinterp.cpp:364)
==30297== by 0xB2AAB35: js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct) (jsinterp.cpp:421)
==30297== by 0xB2AB4AB: js::Invoke(JSContext*, JS::Value const&, JS::Value const&, unsigned int, JS::Value*, JS::Value*) (jsinterp.h:134)
==30297== by 0xB2F9672: js::DirectProxyHandler::call(JSContext*, JS::Handle<JSObject*>, JS::CallArgs const&) (jsproxy.cpp:481)
==30297== by 0xB3936BA: js::CrossCompartmentWrapper::call(JSContext*, JS::Handle<JSObject*>, JS::CallArgs const&) (jswrapper.cpp:453)
==30297== by 0xB2FC977: js::Proxy::call(JSContext*, JS::Handle<JSObject*>, JS::CallArgs const&) (jsproxy.cpp:2613)
==30297== by 0xB2FCA6F: proxy_Call(JSContext*, unsigned int, JS::Value*) (jsproxy.cpp:3177)
==30297== by 0xB29ACEB: js::CallJSNative(JSContext*, int (*)(JSContext*, unsigned int, JS::Value*), JS::CallArgs const&) (jscntxtinlines.h:337)
==30297== by 0xB2AAD7E: js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct) (jsinterp.cpp:400)
==30297== by 0xB2A358B: js::Interpret(JSContext*, js::StackFrame*, js::InterpMode, bool) (jsinterp.cpp:2396)
==30297== by 0xB2A9D2E: js::RunScript(JSContext*, js::StackFrame*) (jsinterp.cpp:364)
==30297== by 0xB2AAB35: js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct) (jsinterp.cpp:421)
==30297== by 0xB24FB16: js_fun_apply(JSContext*, unsigned int, JS::Value*) (jsinterp.h:134)
==30297== by 0xB29ACEB: js::CallJSNative(JSContext*, int (*)(JSContext*, unsigned int, JS::Value*), JS::CallArgs const&) (jscntxtinlines.h:337)
==30297== by 0xB2AAC29: js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct) (jsinterp.cpp:407)
==30297== by 0xB2AB4AB: js::Invoke(JSContext*, JS::Value const&, JS::Value const&, unsigned int, JS::Value*, JS::Value*) (jsinterp.h:134)
==30297== by 0xB2F9672: js::DirectProxyHandler::call(JSContext*, JS::Handle<JSObject*>, JS::CallArgs const&) (jsproxy.cpp:481)
==30297== by 0xB3936BA: js::CrossCompartmentWrapper::call(JSContext*, JS::Handle<JSObject*>, JS::CallArgs const&) (jswrapper.cpp:453)
==30297== by 0xB2FC977: js::Proxy::call(JSContext*, JS::Handle<JSObject*>, JS::CallArgs const&) (jsproxy.cpp:2613)
==30297== by 0xB2FCA6F: proxy_Call(JSContext*, unsigned int, JS::Value*) (jsproxy.cpp:3177)
==30297== by 0xB29ACEB: js::CallJSNative(JSContext*, int (*)(JSContext*, unsigned int, JS::Value*), JS::CallArgs const&) (jscntxtinlines.h:337)
==30297== by 0xB2AAD7E: js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct) (jsinterp.cpp:400)
==30297== by 0xB2A358B: js::Interpret(JSContext*, js::StackFrame*, js::InterpMode, bool) (jsinterp.cpp:2396)
==30297== by 0xB2A9D2E: js::RunScript(JSContext*, js::StackFrame*) (jsinterp.cpp:364)
==30297== by 0xB2AAB35: js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct) (jsinterp.cpp:421)
==30297== by 0xB2AB4AB: js::Invoke(JSContext*, JS::Value const&, JS::Value const&, unsigned int, JS::Value*, JS::Value*) (jsinterp.h:134)
==30297== by 0xB2F9672: js::DirectProxyHandler::call(JSContext*, JS::Handle<JSObject*>, JS::CallArgs const&) (jsproxy.cpp:481)
==30297== by 0xB3936BA: js::CrossCompartmentWrapper::call(JSContext*, JS::Handle<JSObject*>, JS::CallArgs const&) (jswrapper.cpp:453)
==30297== by 0xB2FC977: js::Proxy::call(JSContext*, JS::Handle<JSObject*>, JS::CallArgs const&) (jsproxy.cpp:2613)
==30297== by 0xB2FCA6F: proxy_Call(JSContext*, unsigned int, JS::Value*) (jsproxy.cpp:3177)
==30297== by 0xB29ACEB: js::CallJSNative(JSContext*, int (*)(JSContext*, unsigned int, JS::Value*), JS::CallArgs const&) (jscntxtinlines.h:337)
==30297== by 0xB2AAD7E: js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct) (jsinterp.cpp:400)
==30297==
Full run log can be sent gzipped (about 800KB, ungzipped about 8MB) on request.
Assignee | ||
Comment 1•12 years ago
|
||
(In reply to ISHIKAWA, chiaki from comment #0)
> Use of uninitialized value from
> imgStatusTracker::CalculateAndApplyDifference(imgStatusTracker*)
> (imgStatusTracker.cpp:563)
>
>
> Running thunderbird under valgrind while "make mozmill" test harness
> of thunderbird is run revealed
> new uninitialized value usage has been introduced in the last 10 days.
>
> Background: I am trying to find out the cause of strange memory error
> during GC which was noticed about 10 days ago, and I have been
> checking the execution under memgrind after a refresh of source code
> re-run the test. In contrast to the test I ran back in the middle of April I
> now see a sudden increase of uninitialized value usage.
> [I wish I could run this more often, but the whole run takes a full day
> more or less (and I am running this with full DEBUG BUILD so that
> I can co-relate the memory problem with the running of the program
> more easily.), but I digress.]
>
> In the summary below, note that because of the longer time out caused
> by the the very slow nature of valgrind execution, some tests
> inevitably timed out and could not be run successfully. So the errors
> summarized may vary from each run. But not this much for an identical
> binary,
> for example. And the warning signature is something I have never seen before.
>
> Summary created on April 15
> Analyzing /FF-NEW/log84-memcheck-fixedstack.txt ...
> ========================================
> Summary
> ========================================
> 6 Memcheck:Addr4 <=== some of these are GC bug
> 7 Memcheck:Cond <=== ****
> 17 Memcheck:Free
> 182 Memcheck:Leak
> 2 Memcheck:Param
> 4 Memcheck:Value4
>
> Summary created Apri 18.
> Analyzing /FF-NEW/log88-memcheck.txt ...
> ========================================
> Summary
> ========================================
> 4 Memcheck:Addr4
> 10 Memcheck:Cond <==== ****
> 17 Memcheck:Free
> 180 Memcheck:Leak
> 2 Memcheck:Param
> 5 Memcheck:Value4
>
> Summary from the run on April 28.
> Analyzing /FF-NEW/log94-mozmill-memcheck.txt ...
> ========================================
> Summary
> ========================================
> 3 Memcheck:Addr4
> 205 Memcheck:Cond <=== **** SUDDEN INCREASE
> 18 Memcheck:Free
> 189 Memcheck:Leak
> 2 Memcheck:Param
> 5 Memcheck:Value4
>
>
> Typical stack trace of where the errors are attached at the end.
>
> CalculateAndApplyDifference seems to reference an uninitialized value
> from somewhere.
>
> I am reporting this today, and will try to figure out where the
> uninitialized value comes from next week.
>
> I noticed that there is
> Bug 850951 - Heap-use-after-free in imgStatusTracker::OnStopRequest
> which may or may not be related to this bug, but since that bug
> was discussed back in March, I don't think we are talking about the
> same issue.
>
> Version Info:
> I am using comm-central for building TB locally,
> /COMM-CENTRAL/comm-central
> hg identify
> 6b23f3c319d8 qtip/tip/trychooser.patch
>
> pwd
> /COMM-CENTRAL/comm-central/mozilla
> hg identify
> ccfb2dea3b8e jsd_scpt-warning.patch/qtip/tip
>
>
> Stacktrace:
> (1)
>
> ==30114== Conditional jump or move depends on uninitialised value(s)
> ==30114== at 0x8E5C145:
> imgStatusTracker::CalculateAndApplyDifference(imgStatusTracker*)
> (imgStatusTracker.cpp:563)
> ==30114== by 0x8E2CD02:
> mozilla::image::RasterImage::FinishedSomeDecoding(mozilla::image::
> RasterImage::eShutdownIntent, mozilla::image::RasterImage::DecodeRequest*)
> (RasterImage.cpp:3467)
> ==30114== by 0x8E2C436:
> mozilla::image::RasterImage::DecodePool::DecodeUntilSizeAvailable(mozilla::
> image::RasterImage*) (RasterImage.cpp:3737)
> ==30114== by 0x8E31CB3:
> mozilla::image::RasterImage::RequestDecodeCore(mozilla::image::RasterImage::
> RequestDecodeType) (RasterImage.cpp:2769)
> ==30114== by 0x8E224BF: mozilla::image::RasterImage::StartDecoding()
> (RasterImage.cpp:2730)
> ==30114== by 0x8E531D8: imgRequest::OnDataAvailable(nsIRequest*,
> nsISupports*, nsIInputStream*, unsigned long long, unsigned int)
> (imgRequest.cpp:789)
> ==30114== by 0x8E3C020: ProxyListener::OnDataAvailable(nsIRequest*,
> nsISupports*, nsIInputStream*, unsigned long long, unsigned int)
> (imgLoader.cpp:2109)
> ==30114== by 0x8BC64A2: nsBaseChannel::OnDataAvailable(nsIRequest*,
> nsISupports*, nsIInputStream*, unsigned long long, unsigned int)
> (nsBaseChannel.cpp:765)
> ==30114== by 0x8BDB212: nsInputStreamPump::OnStateTransfer()
> (nsInputStreamPump.cpp:484)
> ==30114== by 0x8BDC82E:
> nsInputStreamPump::OnInputStreamReady(nsIAsyncInputStream*)
> (nsInputStreamPump.cpp:372)
> ==30114== by 0xAC12595: nsInputStreamReadyEvent::Run()
> (nsStreamUtils.cpp:82)
> ==30114== by 0xAC35546: nsThread::ProcessNextEvent(bool, bool*)
> (nsThread.cpp:627)
> ==30114== by 0xABC651E: NS_ProcessNextEvent(nsIThread*, bool)
> (nsThreadUtils.cpp:238)
> ==30114== by 0xAC35F98: nsThread::Shutdown() (nsThread.cpp:474)
> ==30114== by 0x8B6AFDE: nsRunnableMethodImpl<void (nsPACMan::*)(),
> true>::Run() (nsThreadUtils.h:350)
> ==30114== by 0xAC35546: nsThread::ProcessNextEvent(bool, bool*)
> (nsThread.cpp:627)
> ==30114== by 0xABC651E: NS_ProcessNextEvent(nsIThread*, bool)
> (nsThreadUtils.cpp:238)
> ==30114== by 0xA7C8304:
> mozilla::ipc::MessagePump::Run(base::MessagePump::Delegate*)
> (MessagePump.cpp:82)
> ==30114== by 0xAC842CA: MessageLoop::RunInternal() (message_loop.cc:219)
> ==30114== by 0xAC842E6: MessageLoop::RunHandler() (message_loop.cc:212)
> ==30114== by 0xAC84649: MessageLoop::Run() (message_loop.cc:186)
> ==30114== by 0xA14D8B0: nsBaseAppShell::Run() (nsBaseAppShell.cpp:163)
> ==30114== by 0x9E75B87: nsAppStartup::Run() (nsAppStartup.cpp:289)
> ==30114== by 0x8B5BAE0: XREMain::XRE_mainRun() (nsAppRunner.cpp:3878)
> ==30114== by 0x8B5D0B3: XREMain::XRE_main(int, char**, nsXREAppData
> const*) (nsAppRunner.cpp:3945)
> ==30114== by 0x8B5D481: XRE_main (nsAppRunner.cpp:4146)
> ==30114== by 0x8049B7C: main (nsMailApp.cpp:113)
> ==30114== Uninitialised value was created by a heap allocation
> ==30114== at 0x40273B8: malloc (vg_replace_malloc.c:270)
> ==30114== by 0x4A94EB3: moz_xmalloc (mozalloc.cpp:54)
> ==30114== by 0x8E5F030: imgStatusTracker::CloneForRecording()
> (mozalloc.h:201)
> ==30114== by 0x8E23CEF:
> mozilla::image::RasterImage::DecodeRequest::DecodeRequest(mozilla::image::
> RasterImage*) (RasterImage.h:401)
> ==30114== by 0x8E2F2E7: mozilla::image::RasterImage::InitDecoder(bool,
> bool) (RasterImage.cpp:2560)
> ==30114== by 0x8E2FD36: mozilla::image::RasterImage::Init(char const*,
> unsigned int) (RasterImage.cpp:517)
> ==30114== by 0x8E1BE48:
> mozilla::image::ImageFactory::CreateRasterImage(nsIRequest*,
> imgStatusTracker*, nsCString const&, nsIURI*, unsigned int, unsigned int)
> (ImageFactory.cpp:189)
> ==30114== by 0x8E1C1D5:
> mozilla::image::ImageFactory::CreateImage(nsIRequest*, imgStatusTracker*,
> nsCString const&, nsIURI*, bool, unsigned int) (ImageFactory.cpp:106)
> ==30114== by 0x8E52878: imgRequest::OnDataAvailable(nsIRequest*,
> nsISupports*, nsIInputStream*, unsigned long long, unsigned int)
> (imgRequest.cpp:768)
> ==30114== by 0x8E3C020: ProxyListener::OnDataAvailable(nsIRequest*,
> nsISupports*, nsIInputStream*, unsigned long long, unsigned int)
> (imgLoader.cpp:2109)
> ==30114== by 0x8BC64A2: nsBaseChannel::OnDataAvailable(nsIRequest*,
> nsISupports*, nsIInputStream*, unsigned long long, unsigned int)
> (nsBaseChannel.cpp:765)
> ==30114== by 0x8BDB212: nsInputStreamPump::OnStateTransfer()
> (nsInputStreamPump.cpp:484)
> ==30114== by 0x8BDC82E:
> nsInputStreamPump::OnInputStreamReady(nsIAsyncInputStream*)
> (nsInputStreamPump.cpp:372)
> ==30114== by 0xAC12595: nsInputStreamReadyEvent::Run()
> (nsStreamUtils.cpp:82)
> ==30114== by 0xAC35546: nsThread::ProcessNextEvent(bool, bool*)
> (nsThread.cpp:627)
> ==30114== by 0xABC651E: NS_ProcessNextEvent(nsIThread*, bool)
> (nsThreadUtils.cpp:238)
> ==30114== by 0xAC35F98: nsThread::Shutdown() (nsThread.cpp:474)
> ==30114== by 0x8B6AFDE: nsRunnableMethodImpl<void (nsPACMan::*)(),
> true>::Run() (nsThreadUtils.h:350)
> ==30114== by 0xAC35546: nsThread::ProcessNextEvent(bool, bool*)
> (nsThread.cpp:627)
> ==30114== by 0xABC651E: NS_ProcessNextEvent(nsIThread*, bool)
> (nsThreadUtils.cpp:238)
> ==30114== by 0xA7C8304:
> mozilla::ipc::MessagePump::Run(base::MessagePump::Delegate*)
> (MessagePump.cpp:82)
> ==30114== by 0xAC842CA: MessageLoop::RunInternal() (message_loop.cc:219)
> ==30114== by 0xAC842E6: MessageLoop::RunHandler() (message_loop.cc:212)
> ==30114== by 0xAC84649: MessageLoop::Run() (message_loop.cc:186)
> ==30114== by 0xA14D8B0: nsBaseAppShell::Run() (nsBaseAppShell.cpp:163)
> ==30114== by 0x9E75B87: nsAppStartup::Run() (nsAppStartup.cpp:289)
> ==30114== by 0x8B5BAE0: XREMain::XRE_mainRun() (nsAppRunner.cpp:3878)
> ==30114== by 0x8B5D0B3: XREMain::XRE_main(int, char**, nsXREAppData
> const*) (nsAppRunner.cpp:3945)
> ==30114== by 0x8B5D481: XRE_main (nsAppRunner.cpp:4146)
> ==30114== by 0x8049B7C: main (nsMailApp.cpp:113)
> ==30114==
>
>
> (1-b)
>
> This is similar (1), but called from a slightly different placd (4th entry
> in the stack.)
> ==30297== by 0x8E2C452:
> mozilla::image::RasterImage::DecodePool::DecodeUntilSizeAvailable(mozilla::
> image::RasterImage*) (RasterImage.cpp:3719)
>
> (Entry (1) above had different line. (3737 vs 3719)
> ==30114== by 0x8E2C436:
> mozilla::image::RasterImage::DecodePool::DecodeUntilSizeAvailable(mozilla::
> image::RasterImage*) (RasterImage.cpp:3737)
>
>
> ==30297== Conditional jump or move depends on uninitialised value(s)
> ==30297== at 0x8E5BFDA:
> imgStatusTracker::CalculateAndApplyDifference(imgStatusTracker*)
> (imgStatusTracker.cpp:546)
> ==30297== by 0x8E2CD02:
> mozilla::image::RasterImage::FinishedSomeDecoding(mozilla::image::
> RasterImage::eShutdownIntent, mozilla::image::RasterImage::DecodeRequest*)
> (RasterImage.cpp:3467)
> ==30297== by 0x8E2C452:
> mozilla::image::RasterImage::DecodePool::DecodeUntilSizeAvailable(mozilla::
> image::RasterImage*) (RasterImage.cpp:3719)
> ==30297== by 0x8E30E28:
> mozilla::image::RasterImage::DoImageDataComplete() (RasterImage.cpp:1757)
> ==30297== by 0x8E31115:
> mozilla::image::RasterImage::OnImageDataComplete(nsIRequest*, nsISupports*,
> tag_nsresult, bool) (RasterImage.cpp:1806)
> ==30297== by 0x8E4E991: imgRequest::OnStopRequest(nsIRequest*,
> nsISupports*, tag_nsresult) (imgRequest.cpp:616)
> ==30297== by 0x8E3D7E9: ProxyListener::OnStopRequest(nsIRequest*,
> nsISupports*, tag_nsresult) (imgLoader.cpp:2095)
> ==30297== by 0x8BC8BCD: nsBaseChannel::OnStopRequest(nsIRequest*,
> nsISupports*, tag_nsresult) (nsBaseChannel.cpp:737)
> ==30297== by 0x8BDC3AD: nsInputStreamPump::OnStateStop()
> (nsInputStreamPump.cpp:555)
> ==30297== by 0x8BDC7BD:
> nsInputStreamPump::OnInputStreamReady(nsIAsyncInputStream*)
> (nsInputStreamPump.cpp:375)
> ==30297== by 0xAC12595: nsInputStreamReadyEvent::Run()
> (nsStreamUtils.cpp:82)
> ==30297== by 0xAC35546: nsThread::ProcessNextEvent(bool, bool*)
> (nsThread.cpp:627)
> ==30297== by 0xABC651E: NS_ProcessNextEvent(nsIThread*, bool)
> (nsThreadUtils.cpp:238)
> ==30297== by 0xA7C8304:
> mozilla::ipc::MessagePump::Run(base::MessagePump::Delegate*)
> (MessagePump.cpp:82)
> ==30297== by 0xAC842CA: MessageLoop::RunInternal() (message_loop.cc:219)
> ==30297== by 0xAC842E6: MessageLoop::RunHandler() (message_loop.cc:212)
> ==30297== by 0xAC84649: MessageLoop::Run() (message_loop.cc:186)
> ==30297== by 0xA14D8B0: nsBaseAppShell::Run() (nsBaseAppShell.cpp:163)
> ==30297== by 0x9E75B87: nsAppStartup::Run() (nsAppStartup.cpp:289)
> ==30297== by 0x8B5BAE0: XREMain::XRE_mainRun() (nsAppRunner.cpp:3878)
> ==30297== by 0x8B5D0B3: XREMain::XRE_main(int, char**, nsXREAppData
> const*) (nsAppRunner.cpp:3945)
> ==30297== by 0x8B5D481: XRE_main (nsAppRunner.cpp:4146)
> ==30297== by 0x8049B7C: main (nsMailApp.cpp:113)
> ==30297== Uninitialised value was created by a heap allocation
> ==30297== at 0x40273B8: malloc (vg_replace_malloc.c:270)
> ==30297== by 0x4A94EB3: moz_xmalloc (mozalloc.cpp:54)
> ==30297== by 0x8E5F030: imgStatusTracker::CloneForRecording()
> (mozalloc.h:201)
> ==30297== by 0x8E23CEF:
> mozilla::image::RasterImage::DecodeRequest::DecodeRequest(mozilla::image::
> RasterImage*) (RasterImage.h:401)
> ==30297== by 0x8E2F2E7: mozilla::image::RasterImage::InitDecoder(bool,
> bool) (RasterImage.cpp:2560)
> ==30297== by 0x8E2FD36: mozilla::image::RasterImage::Init(char const*,
> unsigned int) (RasterImage.cpp:517)
> ==30297== by 0x8E1BE48:
> mozilla::image::ImageFactory::CreateRasterImage(nsIRequest*,
> imgStatusTracker*, nsCString const&, nsIURI*, unsigned int, unsigned int)
> (ImageFactory.cpp:189)
> ==30297== by 0x8E1C1D5:
> mozilla::image::ImageFactory::CreateImage(nsIRequest*, imgStatusTracker*,
> nsCString const&, nsIURI*, bool, unsigned int) (ImageFactory.cpp:106)
> ==30297== by 0x8E52878: imgRequest::OnDataAvailable(nsIRequest*,
> nsISupports*, nsIInputStream*, unsigned long long, unsigned int)
> (imgRequest.cpp:768)
> ==30297== by 0x8E3C020: ProxyListener::OnDataAvailable(nsIRequest*,
> nsISupports*, nsIInputStream*, unsigned long long, unsigned int)
> (imgLoader.cpp:2109)
> ==30297== by 0x8BC64A2: nsBaseChannel::OnDataAvailable(nsIRequest*,
> nsISupports*, nsIInputStream*, unsigned long long, unsigned int)
> (nsBaseChannel.cpp:765)
> ==30297== by 0x8BDB212: nsInputStreamPump::OnStateTransfer()
> (nsInputStreamPump.cpp:484)
> ==30297== by 0x8BDC82E:
> nsInputStreamPump::OnInputStreamReady(nsIAsyncInputStream*)
> (nsInputStreamPump.cpp:372)
> ==30297== by 0xAC12595: nsInputStreamReadyEvent::Run()
> (nsStreamUtils.cpp:82)
> ==30297== by 0xAC35546: nsThread::ProcessNextEvent(bool, bool*)
> (nsThread.cpp:627)
> ==30297== by 0xABC651E: NS_ProcessNextEvent(nsIThread*, bool)
> (nsThreadUtils.cpp:238)
> ==30297== by 0xA7C8304:
> mozilla::ipc::MessagePump::Run(base::MessagePump::Delegate*)
> (MessagePump.cpp:82)
> ==30297== by 0xAC842CA: MessageLoop::RunInternal() (message_loop.cc:219)
> ==30297== by 0xAC842E6: MessageLoop::RunHandler() (message_loop.cc:212)
> ==30297== by 0xAC84649: MessageLoop::Run() (message_loop.cc:186)
> ==30297== by 0xA14D8B0: nsBaseAppShell::Run() (nsBaseAppShell.cpp:163)
> ==30297== by 0x9E75B87: nsAppStartup::Run() (nsAppStartup.cpp:289)
> ==30297== by 0x8B5BAE0: XREMain::XRE_mainRun() (nsAppRunner.cpp:3878)
> ==30297== by 0x8B5D0B3: XREMain::XRE_main(int, char**, nsXREAppData
> const*) (nsAppRunner.cpp:3945)
> ==30297== by 0x8B5D481: XRE_main (nsAppRunner.cpp:4146)
> ==30297== by 0x8049B7C: main (nsMailApp.cpp:113)
> ==30297==
>
>
> (2) This and the following (3) shows calls from OnStartRequest, and
> OnImageDataComplete
>
> ==30114== Conditional jump or move depends on uninitialised value(s)
> ==30114== at 0x8E5C010:
> imgStatusTracker::CalculateAndApplyDifference(imgStatusTracker*)
> (imgStatusTracker.cpp:563)
> ==30114== by 0x8E390EB:
> mozilla::image::VectorImage::OnStartRequest(nsIRequest*, nsISupports*)
> (VectorImage.cpp:784)
> ==30114== by 0x8E1B62C:
> mozilla::image::ImageFactory::CreateVectorImage(nsIRequest*,
> imgStatusTracker*, nsCString const&, nsIURI*, unsigned int, unsigned int)
> (ImageFactory.cpp:237)
> ==30114== by 0x8E1C217:
> mozilla::image::ImageFactory::CreateImage(nsIRequest*, imgStatusTracker*,
> nsCString const&, nsIURI*, bool, unsigned int) (ImageFactory.cpp:103)
> ==30114== by 0x8E52878: imgRequest::OnDataAvailable(nsIRequest*,
> nsISupports*, nsIInputStream*, unsigned long long, unsigned int)
> (imgRequest.cpp:768)
> ==30114== by 0x8E3C020: ProxyListener::OnDataAvailable(nsIRequest*,
> nsISupports*, nsIInputStream*, unsigned long long, unsigned int)
> (imgLoader.cpp:2109)
> ==30114== by 0x8BC64A2: nsBaseChannel::OnDataAvailable(nsIRequest*,
> nsISupports*, nsIInputStream*, unsigned long long, unsigned int)
> (nsBaseChannel.cpp:765)
> ==30114== by 0x8BDB212: nsInputStreamPump::OnStateTransfer()
> (nsInputStreamPump.cpp:484)
> ==30114== by 0x8BDC82E:
> nsInputStreamPump::OnInputStreamReady(nsIAsyncInputStream*)
> (nsInputStreamPump.cpp:372)
> ==30114== by 0xAC12595: nsInputStreamReadyEvent::Run()
> (nsStreamUtils.cpp:82)
> ==30114== by 0xAC35546: nsThread::ProcessNextEvent(bool, bool*)
> (nsThread.cpp:627)
> ==30114== by 0xAC61A63: NS_InvokeByIndex (in
> /TEST-MAIL-DIR/objdir-tb3/mozilla/toolkit/library/libxul.so)
> ==30114== by 0x9CF77CB: CallMethodHelper::Call()
> (XPCWrappedNative.cpp:2945)
> ==30114== by 0x9CF81BA: XPCWrappedNative::CallMethod(XPCCallContext&,
> XPCWrappedNative::CallMode) (XPCWrappedNative.cpp:2246)
> ==30114== by 0x9CFFBE3: XPC_WN_CallMethod(JSContext*, unsigned int,
> JS::Value*) (XPCWrappedNativeJSOps.cpp:1483)
> ==30114== by 0xB29ACEB: js::CallJSNative(JSContext*, int (*)(JSContext*,
> unsigned int, JS::Value*), JS::CallArgs const&) (jscntxtinlines.h:337)
> ==30114== by 0xB2AAC29: js::InvokeKernel(JSContext*, JS::CallArgs,
> js::MaybeConstruct) (jsinterp.cpp:407)
> ==30114== by 0xB2A358B: js::Interpret(JSContext*, js::StackFrame*,
> js::InterpMode, bool) (jsinterp.cpp:2396)
> ==30114== by 0xB2A9D2E: js::RunScript(JSContext*, js::StackFrame*)
> (jsinterp.cpp:364)
> ==30114== by 0xB2AAB35: js::InvokeKernel(JSContext*, JS::CallArgs,
> js::MaybeConstruct) (jsinterp.cpp:421)
> ==30114== by 0xB2AB4AB: js::Invoke(JSContext*, JS::Value const&,
> JS::Value const&, unsigned int, JS::Value*, JS::Value*) (jsinterp.h:134)
> ==30114== by 0xB2F9672: js::DirectProxyHandler::call(JSContext*,
> JS::Handle<JSObject*>, JS::CallArgs const&) (jsproxy.cpp:481)
> ==30114== by 0xB3936BA: js::CrossCompartmentWrapper::call(JSContext*,
> JS::Handle<JSObject*>, JS::CallArgs const&) (jswrapper.cpp:453)
> ==30114== by 0xB2FC977: js::Proxy::call(JSContext*,
> JS::Handle<JSObject*>, JS::CallArgs const&) (jsproxy.cpp:2613)
> ==30114== by 0xB2FCA6F: proxy_Call(JSContext*, unsigned int, JS::Value*)
> (jsproxy.cpp:3177)
> ==30114== by 0xB29ACEB: js::CallJSNative(JSContext*, int (*)(JSContext*,
> unsigned int, JS::Value*), JS::CallArgs const&) (jscntxtinlines.h:337)
> ==30114== by 0xB2AAD7E: js::InvokeKernel(JSContext*, JS::CallArgs,
> js::MaybeConstruct) (jsinterp.cpp:400)
> ==30114== by 0xB2A358B: js::Interpret(JSContext*, js::StackFrame*,
> js::InterpMode, bool) (jsinterp.cpp:2396)
> ==30114== by 0xB2A9D2E: js::RunScript(JSContext*, js::StackFrame*)
> (jsinterp.cpp:364)
> ==30114== by 0xB2AAB35: js::InvokeKernel(JSContext*, JS::CallArgs,
> js::MaybeConstruct) (jsinterp.cpp:421)
> ==30114== by 0xB24FB16: js_fun_apply(JSContext*, unsigned int,
> JS::Value*) (jsinterp.h:134)
> ==30114== by 0xB29ACEB: js::CallJSNative(JSContext*, int (*)(JSContext*,
> unsigned int, JS::Value*), JS::CallArgs const&) (jscntxtinlines.h:337)
> ==30114== by 0xB2AAC29: js::InvokeKernel(JSContext*, JS::CallArgs,
> js::MaybeConstruct) (jsinterp.cpp:407)
> ==30114== by 0xB2AB4AB: js::Invoke(JSContext*, JS::Value const&,
> JS::Value const&, unsigned int, JS::Value*, JS::Value*) (jsinterp.h:134)
> ==30114== by 0xB2F9672: js::DirectProxyHandler::call(JSContext*,
> JS::Handle<JSObject*>, JS::CallArgs const&) (jsproxy.cpp:481)
> ==30114== by 0xB3936BA: js::CrossCompartmentWrapper::call(JSContext*,
> JS::Handle<JSObject*>, JS::CallArgs const&) (jswrapper.cpp:453)
> ==30114== by 0xB2FC977: js::Proxy::call(JSContext*,
> JS::Handle<JSObject*>, JS::CallArgs const&) (jsproxy.cpp:2613)
> ==30114== by 0xB2FCA6F: proxy_Call(JSContext*, unsigned int, JS::Value*)
> (jsproxy.cpp:3177)
> ==30114== by 0xB29ACEB: js::CallJSNative(JSContext*, int (*)(JSContext*,
> unsigned int, JS::Value*), JS::CallArgs const&) (jscntxtinlines.h:337)
> ==30114== by 0xB2AAD7E: js::InvokeKernel(JSContext*, JS::CallArgs,
> js::MaybeConstruct) (jsinterp.cpp:400)
> ==30114== by 0xB2A358B: js::Interpret(JSContext*, js::StackFrame*,
> js::InterpMode, bool) (jsinterp.cpp:2396)
> ==30114== by 0xB2A9D2E: js::RunScript(JSContext*, js::StackFrame*)
> (jsinterp.cpp:364)
> ==30114== by 0xB2AAB35: js::InvokeKernel(JSContext*, JS::CallArgs,
> js::MaybeConstruct) (jsinterp.cpp:421)
> ==30114== by 0xB2AB4AB: js::Invoke(JSContext*, JS::Value const&,
> JS::Value const&, unsigned int, JS::Value*, JS::Value*) (jsinterp.h:134)
> ==30114== by 0xB2F9672: js::DirectProxyHandler::call(JSContext*,
> JS::Handle<JSObject*>, JS::CallArgs const&) (jsproxy.cpp:481)
> ==30114== by 0xB3936BA: js::CrossCompartmentWrapper::call(JSContext*,
> JS::Handle<JSObject*>, JS::CallArgs const&) (jswrapper.cpp:453)
> ==30114== by 0xB2FC977: js::Proxy::call(JSContext*,
> JS::Handle<JSObject*>, JS::CallArgs const&) (jsproxy.cpp:2613)
> ==30114== by 0xB2FCA6F: proxy_Call(JSContext*, unsigned int, JS::Value*)
> (jsproxy.cpp:3177)
> ==30114== by 0xB29ACEB: js::CallJSNative(JSContext*, int (*)(JSContext*,
> unsigned int, JS::Value*), JS::CallArgs const&) (jscntxtinlines.h:337)
> ==30114== by 0xB2AAD7E: js::InvokeKernel(JSContext*, JS::CallArgs,
> js::MaybeConstruct) (jsinterp.cpp:400)
> ==30114== Uninitialised value was created by a heap allocation
> ==30114== at 0x40273B8: malloc (vg_replace_malloc.c:270)
> ==30114== by 0x4A94EB3: moz_xmalloc (mozalloc.cpp:54)
> ==30114== by 0x8E5F030: imgStatusTracker::CloneForRecording()
> (mozalloc.h:201)
> ==30114== by 0x8E390AE:
> mozilla::image::VectorImage::OnStartRequest(nsIRequest*, nsISupports*)
> (VectorImage.cpp:781)
> ==30114== by 0x8E1B62C:
> mozilla::image::ImageFactory::CreateVectorImage(nsIRequest*,
> imgStatusTracker*, nsCString const&, nsIURI*, unsigned int, unsigned int)
> (ImageFactory.cpp:237)
> ==30114== by 0x8E1C217:
> mozilla::image::ImageFactory::CreateImage(nsIRequest*, imgStatusTracker*,
> nsCString const&, nsIURI*, bool, unsigned int) (ImageFactory.cpp:103)
> ==30114== by 0x8E52878: imgRequest::OnDataAvailable(nsIRequest*,
> nsISupports*, nsIInputStream*, unsigned long long, unsigned int)
> (imgRequest.cpp:768)
> ==30114== by 0x8E3C020: ProxyListener::OnDataAvailable(nsIRequest*,
> nsISupports*, nsIInputStream*, unsigned long long, unsigned int)
> (imgLoader.cpp:2109)
> ==30114== by 0x8BC64A2: nsBaseChannel::OnDataAvailable(nsIRequest*,
> nsISupports*, nsIInputStream*, unsigned long long, unsigned int)
> (nsBaseChannel.cpp:765)
> ==30114== by 0x8BDB212: nsInputStreamPump::OnStateTransfer()
> (nsInputStreamPump.cpp:484)
> ==30114== by 0x8BDC82E:
> nsInputStreamPump::OnInputStreamReady(nsIAsyncInputStream*)
> (nsInputStreamPump.cpp:372)
> ==30114== by 0xAC12595: nsInputStreamReadyEvent::Run()
> (nsStreamUtils.cpp:82)
> ==30114== by 0xAC35546: nsThread::ProcessNextEvent(bool, bool*)
> (nsThread.cpp:627)
> ==30114== by 0xAC61A63: NS_InvokeByIndex (in
> /TEST-MAIL-DIR/objdir-tb3/mozilla/toolkit/library/libxul.so)
> ==30114== by 0x9CF77CB: CallMethodHelper::Call()
> (XPCWrappedNative.cpp:2945)
> ==30114== by 0x9CF81BA: XPCWrappedNative::CallMethod(XPCCallContext&,
> XPCWrappedNative::CallMode) (XPCWrappedNative.cpp:2246)
> ==30114== by 0x9CFFBE3: XPC_WN_CallMethod(JSContext*, unsigned int,
> JS::Value*) (XPCWrappedNativeJSOps.cpp:1483)
> ==30114== by 0xB29ACEB: js::CallJSNative(JSContext*, int (*)(JSContext*,
> unsigned int, JS::Value*), JS::CallArgs const&) (jscntxtinlines.h:337)
> ==30114== by 0xB2AAC29: js::InvokeKernel(JSContext*, JS::CallArgs,
> js::MaybeConstruct) (jsinterp.cpp:407)
> ==30114== by 0xB2A358B: js::Interpret(JSContext*, js::StackFrame*,
> js::InterpMode, bool) (jsinterp.cpp:2396)
> ==30114== by 0xB2A9D2E: js::RunScript(JSContext*, js::StackFrame*)
> (jsinterp.cpp:364)
> ==30114== by 0xB2AAB35: js::InvokeKernel(JSContext*, JS::CallArgs,
> js::MaybeConstruct) (jsinterp.cpp:421)
> ==30114== by 0xB2AB4AB: js::Invoke(JSContext*, JS::Value const&,
> JS::Value const&, unsigned int, JS::Value*, JS::Value*) (jsinterp.h:134)
> ==30114== by 0xB2F9672: js::DirectProxyHandler::call(JSContext*,
> JS::Handle<JSObject*>, JS::CallArgs const&) (jsproxy.cpp:481)
> ==30114== by 0xB3936BA: js::CrossCompartmentWrapper::call(JSContext*,
> JS::Handle<JSObject*>, JS::CallArgs const&) (jswrapper.cpp:453)
> ==30114== by 0xB2FC977: js::Proxy::call(JSContext*,
> JS::Handle<JSObject*>, JS::CallArgs const&) (jsproxy.cpp:2613)
> ==30114== by 0xB2FCA6F: proxy_Call(JSContext*, unsigned int, JS::Value*)
> (jsproxy.cpp:3177)
> ==30114== by 0xB29ACEB: js::CallJSNative(JSContext*, int (*)(JSContext*,
> unsigned int, JS::Value*), JS::CallArgs const&) (jscntxtinlines.h:337)
> ==30114== by 0xB2AAD7E: js::InvokeKernel(JSContext*, JS::CallArgs,
> js::MaybeConstruct) (jsinterp.cpp:400)
> ==30114== by 0xB2A358B: js::Interpret(JSContext*, js::StackFrame*,
> js::InterpMode, bool) (jsinterp.cpp:2396)
> ==30114== by 0xB2A9D2E: js::RunScript(JSContext*, js::StackFrame*)
> (jsinterp.cpp:364)
> ==30114== by 0xB2AAB35: js::InvokeKernel(JSContext*, JS::CallArgs,
> js::MaybeConstruct) (jsinterp.cpp:421)
> ==30114== by 0xB24FB16: js_fun_apply(JSContext*, unsigned int,
> JS::Value*) (jsinterp.h:134)
> ==30114== by 0xB29ACEB: js::CallJSNative(JSContext*, int (*)(JSContext*,
> unsigned int, JS::Value*), JS::CallArgs const&) (jscntxtinlines.h:337)
> ==30114== by 0xB2AAC29: js::InvokeKernel(JSContext*, JS::CallArgs,
> js::MaybeConstruct) (jsinterp.cpp:407)
> ==30114== by 0xB2AB4AB: js::Invoke(JSContext*, JS::Value const&,
> JS::Value const&, unsigned int, JS::Value*, JS::Value*) (jsinterp.h:134)
> ==30114== by 0xB2F9672: js::DirectProxyHandler::call(JSContext*,
> JS::Handle<JSObject*>, JS::CallArgs const&) (jsproxy.cpp:481)
> ==30114== by 0xB3936BA: js::CrossCompartmentWrapper::call(JSContext*,
> JS::Handle<JSObject*>, JS::CallArgs const&) (jswrapper.cpp:453)
> ==30114== by 0xB2FC977: js::Proxy::call(JSContext*,
> JS::Handle<JSObject*>, JS::CallArgs const&) (jsproxy.cpp:2613)
> ==30114== by 0xB2FCA6F: proxy_Call(JSContext*, unsigned int, JS::Value*)
> (jsproxy.cpp:3177)
> ==30114== by 0xB29ACEB: js::CallJSNative(JSContext*, int (*)(JSContext*,
> unsigned int, JS::Value*), JS::CallArgs const&) (jscntxtinlines.h:337)
> ==30114== by 0xB2AAD7E: js::InvokeKernel(JSContext*, JS::CallArgs,
> js::MaybeConstruct) (jsinterp.cpp:400)
> ==30114== by 0xB2A358B: js::Interpret(JSContext*, js::StackFrame*,
> js::InterpMode, bool) (jsinterp.cpp:2396)
> ==30114== by 0xB2A9D2E: js::RunScript(JSContext*, js::StackFrame*)
> (jsinterp.cpp:364)
> ==30114== by 0xB2AAB35: js::InvokeKernel(JSContext*, JS::CallArgs,
> js::MaybeConstruct) (jsinterp.cpp:421)
> ==30114== by 0xB2AB4AB: js::Invoke(JSContext*, JS::Value const&,
> JS::Value const&, unsigned int, JS::Value*, JS::Value*) (jsinterp.h:134)
> ==30114== by 0xB2F9672: js::DirectProxyHandler::call(JSContext*,
> JS::Handle<JSObject*>, JS::CallArgs const&) (jsproxy.cpp:481)
> ==30114== by 0xB3936BA: js::CrossCompartmentWrapper::call(JSContext*,
> JS::Handle<JSObject*>, JS::CallArgs const&) (jswrapper.cpp:453)
> ==30114== by 0xB2FC977: js::Proxy::call(JSContext*,
> JS::Handle<JSObject*>, JS::CallArgs const&) (jsproxy.cpp:2613)
> ==30114== by 0xB2FCA6F: proxy_Call(JSContext*, unsigned int, JS::Value*)
> (jsproxy.cpp:3177)
> ==30114==
>
>
> (3)
>
> ==30297== Conditional jump or move depends on uninitialised value(s)
> ==30297== at 0x8E5BFDA:
> imgStatusTracker::CalculateAndApplyDifference(imgStatusTracker*)
> (imgStatusTracker.cpp:546)
> ==30297== by 0x8E36096:
> mozilla::image::VectorImage::OnImageDataComplete(nsIRequest*, nsISupports*,
> tag_nsresult, bool) (VectorImage.cpp:388)
> ==30297== by 0x8E4E991: imgRequest::OnStopRequest(nsIRequest*,
> nsISupports*, tag_nsresult) (imgRequest.cpp:616)
> ==30297== by 0x8E3D7E9: ProxyListener::OnStopRequest(nsIRequest*,
> nsISupports*, tag_nsresult) (imgLoader.cpp:2095)
> ==30297== by 0x8BC8BCD: nsBaseChannel::OnStopRequest(nsIRequest*,
> nsISupports*, tag_nsresult) (nsBaseChannel.cpp:737)
> ==30297== by 0x8BDC3AD: nsInputStreamPump::OnStateStop()
> (nsInputStreamPump.cpp:555)
> ==30297== by 0x8BDC7BD:
> nsInputStreamPump::OnInputStreamReady(nsIAsyncInputStream*)
> (nsInputStreamPump.cpp:375)
> ==30297== by 0xAC12595: nsInputStreamReadyEvent::Run()
> (nsStreamUtils.cpp:82)
> ==30297== by 0xAC35546: nsThread::ProcessNextEvent(bool, bool*)
> (nsThread.cpp:627)
> ==30297== by 0xAC61A63: NS_InvokeByIndex (in
> /TEST-MAIL-DIR/objdir-tb3/mozilla/toolkit/library/libxul.so)
> ==30297== by 0x9CF77CB: CallMethodHelper::Call()
> (XPCWrappedNative.cpp:2945)
> ==30297== by 0x9CF81BA: XPCWrappedNative::CallMethod(XPCCallContext&,
> XPCWrappedNative::CallMode) (XPCWrappedNative.cpp:2246)
> ==30297== by 0x9CFFBE3: XPC_WN_CallMethod(JSContext*, unsigned int,
> JS::Value*) (XPCWrappedNativeJSOps.cpp:1483)
> ==30297== by 0xB29ACEB: js::CallJSNative(JSContext*, int (*)(JSContext*,
> unsigned int, JS::Value*), JS::CallArgs const&) (jscntxtinlines.h:337)
> ==30297== by 0xB2AAC29: js::InvokeKernel(JSContext*, JS::CallArgs,
> js::MaybeConstruct) (jsinterp.cpp:407)
> ==30297== by 0xB2A358B: js::Interpret(JSContext*, js::StackFrame*,
> js::InterpMode, bool) (jsinterp.cpp:2396)
> ==30297== by 0xB2A9D2E: js::RunScript(JSContext*, js::StackFrame*)
> (jsinterp.cpp:364)
> ==30297== by 0xB2AAB35: js::InvokeKernel(JSContext*, JS::CallArgs,
> js::MaybeConstruct) (jsinterp.cpp:421)
> ==30297== by 0xB2AB4AB: js::Invoke(JSContext*, JS::Value const&,
> JS::Value const&, unsigned int, JS::Value*, JS::Value*) (jsinterp.h:134)
> ==30297== by 0xB2F9672: js::DirectProxyHandler::call(JSContext*,
> JS::Handle<JSObject*>, JS::CallArgs const&) (jsproxy.cpp:481)
> ==30297== by 0xB3936BA: js::CrossCompartmentWrapper::call(JSContext*,
> JS::Handle<JSObject*>, JS::CallArgs const&) (jswrapper.cpp:453)
> ==30297== by 0xB2FC977: js::Proxy::call(JSContext*,
> JS::Handle<JSObject*>, JS::CallArgs const&) (jsproxy.cpp:2613)
> ==30297== by 0xB2FCA6F: proxy_Call(JSContext*, unsigned int, JS::Value*)
> (jsproxy.cpp:3177)
> ==30297== by 0xB29ACEB: js::CallJSNative(JSContext*, int (*)(JSContext*,
> unsigned int, JS::Value*), JS::CallArgs const&) (jscntxtinlines.h:337)
> ==30297== by 0xB2AAD7E: js::InvokeKernel(JSContext*, JS::CallArgs,
> js::MaybeConstruct) (jsinterp.cpp:400)
> ==30297== by 0xB2A358B: js::Interpret(JSContext*, js::StackFrame*,
> js::InterpMode, bool) (jsinterp.cpp:2396)
> ==30297== by 0xB2A9D2E: js::RunScript(JSContext*, js::StackFrame*)
> (jsinterp.cpp:364)
> ==30297== by 0xB2AAB35: js::InvokeKernel(JSContext*, JS::CallArgs,
> js::MaybeConstruct) (jsinterp.cpp:421)
> ==30297== by 0xB24FB16: js_fun_apply(JSContext*, unsigned int,
> JS::Value*) (jsinterp.h:134)
> ==30297== by 0xB29ACEB: js::CallJSNative(JSContext*, int (*)(JSContext*,
> unsigned int, JS::Value*), JS::CallArgs const&) (jscntxtinlines.h:337)
> ==30297== by 0xB2AAC29: js::InvokeKernel(JSContext*, JS::CallArgs,
> js::MaybeConstruct) (jsinterp.cpp:407)
> ==30297== by 0xB2AB4AB: js::Invoke(JSContext*, JS::Value const&,
> JS::Value const&, unsigned int, JS::Value*, JS::Value*) (jsinterp.h:134)
> ==30297== by 0xB2F9672: js::DirectProxyHandler::call(JSContext*,
> JS::Handle<JSObject*>, JS::CallArgs const&) (jsproxy.cpp:481)
> ==30297== by 0xB3936BA: js::CrossCompartmentWrapper::call(JSContext*,
> JS::Handle<JSObject*>, JS::CallArgs const&) (jswrapper.cpp:453)
> ==30297== by 0xB2FC977: js::Proxy::call(JSContext*,
> JS::Handle<JSObject*>, JS::CallArgs const&) (jsproxy.cpp:2613)
> ==30297== by 0xB2FCA6F: proxy_Call(JSContext*, unsigned int, JS::Value*)
> (jsproxy.cpp:3177)
> ==30297== by 0xB29ACEB: js::CallJSNative(JSContext*, int (*)(JSContext*,
> unsigned int, JS::Value*), JS::CallArgs const&) (jscntxtinlines.h:337)
> ==30297== by 0xB2AAD7E: js::InvokeKernel(JSContext*, JS::CallArgs,
> js::MaybeConstruct) (jsinterp.cpp:400)
> ==30297== by 0xB2A358B: js::Interpret(JSContext*, js::StackFrame*,
> js::InterpMode, bool) (jsinterp.cpp:2396)
> ==30297== by 0xB2A9D2E: js::RunScript(JSContext*, js::StackFrame*)
> (jsinterp.cpp:364)
> ==30297== by 0xB2AAB35: js::InvokeKernel(JSContext*, JS::CallArgs,
> js::MaybeConstruct) (jsinterp.cpp:421)
> ==30297== by 0xB2AB4AB: js::Invoke(JSContext*, JS::Value const&,
> JS::Value const&, unsigned int, JS::Value*, JS::Value*) (jsinterp.h:134)
> ==30297== by 0xB2F9672: js::DirectProxyHandler::call(JSContext*,
> JS::Handle<JSObject*>, JS::CallArgs const&) (jsproxy.cpp:481)
> ==30297== by 0xB3936BA: js::CrossCompartmentWrapper::call(JSContext*,
> JS::Handle<JSObject*>, JS::CallArgs const&) (jswrapper.cpp:453)
> ==30297== by 0xB2FC977: js::Proxy::call(JSContext*,
> JS::Handle<JSObject*>, JS::CallArgs const&) (jsproxy.cpp:2613)
> ==30297== by 0xB2FCA6F: proxy_Call(JSContext*, unsigned int, JS::Value*)
> (jsproxy.cpp:3177)
> ==30297== by 0xB29ACEB: js::CallJSNative(JSContext*, int (*)(JSContext*,
> unsigned int, JS::Value*), JS::CallArgs const&) (jscntxtinlines.h:337)
> ==30297== by 0xB2AAD7E: js::InvokeKernel(JSContext*, JS::CallArgs,
> js::MaybeConstruct) (jsinterp.cpp:400)
> ==30297== by 0xB2A358B: js::Interpret(JSContext*, js::StackFrame*,
> js::InterpMode, bool) (jsinterp.cpp:2396)
> ==30297== by 0xB2A9D2E: js::RunScript(JSContext*, js::StackFrame*)
> (jsinterp.cpp:364)
> ==30297== Uninitialised value was created by a heap allocation
> ==30297== at 0x40273B8: malloc (vg_replace_malloc.c:270)
> ==30297== by 0x4A94EB3: moz_xmalloc (mozalloc.cpp:54)
> ==30297== by 0x8E5F030: imgStatusTracker::CloneForRecording()
> (mozalloc.h:201)
> ==30297== by 0x8E3601F:
> mozilla::image::VectorImage::OnImageDataComplete(nsIRequest*, nsISupports*,
> tag_nsresult, bool) (VectorImage.cpp:385)
> ==30297== by 0x8E4E991: imgRequest::OnStopRequest(nsIRequest*,
> nsISupports*, tag_nsresult) (imgRequest.cpp:616)
> ==30297== by 0x8E3D7E9: ProxyListener::OnStopRequest(nsIRequest*,
> nsISupports*, tag_nsresult) (imgLoader.cpp:2095)
> ==30297== by 0x8BC8BCD: nsBaseChannel::OnStopRequest(nsIRequest*,
> nsISupports*, tag_nsresult) (nsBaseChannel.cpp:737)
> ==30297== by 0x8BDC3AD: nsInputStreamPump::OnStateStop()
> (nsInputStreamPump.cpp:555)
> ==30297== by 0x8BDC7BD:
> nsInputStreamPump::OnInputStreamReady(nsIAsyncInputStream*)
> (nsInputStreamPump.cpp:375)
> ==30297== by 0xAC12595: nsInputStreamReadyEvent::Run()
> (nsStreamUtils.cpp:82)
> ==30297== by 0xAC35546: nsThread::ProcessNextEvent(bool, bool*)
> (nsThread.cpp:627)
> ==30297== by 0xAC61A63: NS_InvokeByIndex (in
> /TEST-MAIL-DIR/objdir-tb3/mozilla/toolkit/library/libxul.so)
> ==30297== by 0x9CF77CB: CallMethodHelper::Call()
> (XPCWrappedNative.cpp:2945)
> ==30297== by 0x9CF81BA: XPCWrappedNative::CallMethod(XPCCallContext&,
> XPCWrappedNative::CallMode) (XPCWrappedNative.cpp:2246)
> ==30297== by 0x9CFFBE3: XPC_WN_CallMethod(JSContext*, unsigned int,
> JS::Value*) (XPCWrappedNativeJSOps.cpp:1483)
> ==30297== by 0xB29ACEB: js::CallJSNative(JSContext*, int (*)(JSContext*,
> unsigned int, JS::Value*), JS::CallArgs const&) (jscntxtinlines.h:337)
> ==30297== by 0xB2AAC29: js::InvokeKernel(JSContext*, JS::CallArgs,
> js::MaybeConstruct) (jsinterp.cpp:407)
> ==30297== by 0xB2A358B: js::Interpret(JSContext*, js::StackFrame*,
> js::InterpMode, bool) (jsinterp.cpp:2396)
> ==30297== by 0xB2A9D2E: js::RunScript(JSContext*, js::StackFrame*)
> (jsinterp.cpp:364)
> ==30297== by 0xB2AAB35: js::InvokeKernel(JSContext*, JS::CallArgs,
> js::MaybeConstruct) (jsinterp.cpp:421)
> ==30297== by 0xB2AB4AB: js::Invoke(JSContext*, JS::Value const&,
> JS::Value const&, unsigned int, JS::Value*, JS::Value*) (jsinterp.h:134)
> ==30297== by 0xB2F9672: js::DirectProxyHandler::call(JSContext*,
> JS::Handle<JSObject*>, JS::CallArgs const&) (jsproxy.cpp:481)
> ==30297== by 0xB3936BA: js::CrossCompartmentWrapper::call(JSContext*,
> JS::Handle<JSObject*>, JS::CallArgs const&) (jswrapper.cpp:453)
> ==30297== by 0xB2FC977: js::Proxy::call(JSContext*,
> JS::Handle<JSObject*>, JS::CallArgs const&) (jsproxy.cpp:2613)
> ==30297== by 0xB2FCA6F: proxy_Call(JSContext*, unsigned int, JS::Value*)
> (jsproxy.cpp:3177)
> ==30297== by 0xB29ACEB: js::CallJSNative(JSContext*, int (*)(JSContext*,
> unsigned int, JS::Value*), JS::CallArgs const&) (jscntxtinlines.h:337)
> ==30297== by 0xB2AAD7E: js::InvokeKernel(JSContext*, JS::CallArgs,
> js::MaybeConstruct) (jsinterp.cpp:400)
> ==30297== by 0xB2A358B: js::Interpret(JSContext*, js::StackFrame*,
> js::InterpMode, bool) (jsinterp.cpp:2396)
> ==30297== by 0xB2A9D2E: js::RunScript(JSContext*, js::StackFrame*)
> (jsinterp.cpp:364)
> ==30297== by 0xB2AAB35: js::InvokeKernel(JSContext*, JS::CallArgs,
> js::MaybeConstruct) (jsinterp.cpp:421)
> ==30297== by 0xB24FB16: js_fun_apply(JSContext*, unsigned int,
> JS::Value*) (jsinterp.h:134)
> ==30297== by 0xB29ACEB: js::CallJSNative(JSContext*, int (*)(JSContext*,
> unsigned int, JS::Value*), JS::CallArgs const&) (jscntxtinlines.h:337)
> ==30297== by 0xB2AAC29: js::InvokeKernel(JSContext*, JS::CallArgs,
> js::MaybeConstruct) (jsinterp.cpp:407)
> ==30297== by 0xB2AB4AB: js::Invoke(JSContext*, JS::Value const&,
> JS::Value const&, unsigned int, JS::Value*, JS::Value*) (jsinterp.h:134)
> ==30297== by 0xB2F9672: js::DirectProxyHandler::call(JSContext*,
> JS::Handle<JSObject*>, JS::CallArgs const&) (jsproxy.cpp:481)
> ==30297== by 0xB3936BA: js::CrossCompartmentWrapper::call(JSContext*,
> JS::Handle<JSObject*>, JS::CallArgs const&) (jswrapper.cpp:453)
> ==30297== by 0xB2FC977: js::Proxy::call(JSContext*,
> JS::Handle<JSObject*>, JS::CallArgs const&) (jsproxy.cpp:2613)
> ==30297== by 0xB2FCA6F: proxy_Call(JSContext*, unsigned int, JS::Value*)
> (jsproxy.cpp:3177)
> ==30297== by 0xB29ACEB: js::CallJSNative(JSContext*, int (*)(JSContext*,
> unsigned int, JS::Value*), JS::CallArgs const&) (jscntxtinlines.h:337)
> ==30297== by 0xB2AAD7E: js::InvokeKernel(JSContext*, JS::CallArgs,
> js::MaybeConstruct) (jsinterp.cpp:400)
> ==30297== by 0xB2A358B: js::Interpret(JSContext*, js::StackFrame*,
> js::InterpMode, bool) (jsinterp.cpp:2396)
> ==30297== by 0xB2A9D2E: js::RunScript(JSContext*, js::StackFrame*)
> (jsinterp.cpp:364)
> ==30297== by 0xB2AAB35: js::InvokeKernel(JSContext*, JS::CallArgs,
> js::MaybeConstruct) (jsinterp.cpp:421)
> ==30297== by 0xB2AB4AB: js::Invoke(JSContext*, JS::Value const&,
> JS::Value const&, unsigned int, JS::Value*, JS::Value*) (jsinterp.h:134)
> ==30297== by 0xB2F9672: js::DirectProxyHandler::call(JSContext*,
> JS::Handle<JSObject*>, JS::CallArgs const&) (jsproxy.cpp:481)
> ==30297== by 0xB3936BA: js::CrossCompartmentWrapper::call(JSContext*,
> JS::Handle<JSObject*>, JS::CallArgs const&) (jswrapper.cpp:453)
> ==30297== by 0xB2FC977: js::Proxy::call(JSContext*,
> JS::Handle<JSObject*>, JS::CallArgs const&) (jsproxy.cpp:2613)
> ==30297== by 0xB2FCA6F: proxy_Call(JSContext*, unsigned int, JS::Value*)
> (jsproxy.cpp:3177)
> ==30297== by 0xB29ACEB: js::CallJSNative(JSContext*, int (*)(JSContext*,
> unsigned int, JS::Value*), JS::CallArgs const&) (jscntxtinlines.h:337)
> ==30297== by 0xB2AAD7E: js::InvokeKernel(JSContext*, JS::CallArgs,
> js::MaybeConstruct) (jsinterp.cpp:400)
> ==30297==
>
>
> Full run log can be sent gzipped (about 800KB, ungzipped about 8MB) on
> request.
Assignee | ||
Comment 2•12 years ago
|
||
Sorry for the wrong posting previously. I hit the wrong key or mouse while
navigating.
I would like to report two things.
(1) The uninitialized value usage error/warning *may* be a false-positive from
valgrind/memcheck. I noticed that mHasBeenDecoded is a bit-field and it is possible that memcheck is confused about it. But I am still investigating on this front. If it is false-postivie, we need to do something about shutting down the warnings (so many of them, and they appear even before anything is drawn on the screen at the startup from what I found out.)
(2) There is a dubious sequence of statements.
https://mxr.mozilla.org/comm-central/source/mozilla/image/src/imgStatusTracker.cpp#543
mImageStatus is set on line 543, and then again OR'ed with the original value
that was set. Strange, isnt'it? I susupect that line 543 is not wanted.
I am requesting feedback from Joe Drew <joe@drew.ca> who seem to be working on these lines of code.
543 mImageStatus = other->mImageStatus; <--- here, and
544 mIsMultipart = other->mIsMultipart;
545 mHadLastPart = other->mHadLastPart;
546 mImageStatus |= other->mImageStatus; <--- here
547 mHasBeenDecoded = mHasBeenDecoded || other->mHasBeenDecoded;
Assignee | ||
Comment 3•12 years ago
|
||
Oh well, I found out that obtaining feedback seems to be for attachment only, so I added Joe Drew <joe@drew.ca> to CC list of this bugzilla.
I wonder if he can comment on the strange assignments to mImageStatus.
TIA
Assignee | ||
Comment 4•12 years ago
|
||
Looking at the stack, I wonder if, in the following sequence, we should
initialize the mImageStatus and mHasBeenDecoded field(?) as well.
https://mxr.mozilla.org/comm-central/source/mozilla/image/src/RasterImage.h#394
394 DecodeRequest(RasterImage* aImage)
395 : mImage(aImage)
396 , mBytesToDecode(0)
397 , mRequestStatus(REQUEST_INACTIVE)
398 , mChunkCount(0)
399 , mAllocatedNewFrame(false)
400 {
401 mStatusTracker = aImage->mStatusTracker->CloneForRecording();
402 }
Comment 5•12 years ago
|
||
Next time flag me for needinfo - I caught this request but I won't always!
(In reply to ISHIKAWA, chiaki from comment #2)
> mImageStatus is set on line 543, and then again OR'ed with the original value
> that was set. Strange, isnt'it? I susupect that line 543 is not wanted.
I believe you're right. Good catch - do you want to write that patch?
(In reply to ISHIKAWA, chiaki from comment #4)
> Looking at the stack, I wonder if, in the following sequence, we should
> initialize the mImageStatus and mHasBeenDecoded field(?) as well.
>
>
> https://mxr.mozilla.org/comm-central/source/mozilla/image/src/RasterImage.
> h#394
>
> 394 DecodeRequest(RasterImage* aImage)
> 395 : mImage(aImage)
> 396 , mBytesToDecode(0)
> 397 , mRequestStatus(REQUEST_INACTIVE)
> 398 , mChunkCount(0)
> 399 , mAllocatedNewFrame(false)
> 400 {
> 401 mStatusTracker = aImage->mStatusTracker->CloneForRecording();
> 402 }
That class doesn't actually have mImageStatus and mHasBeenDecoded members - did you mean to look at imgStatusTracker?
In that case, we should *definitely* be initializing those class members of imgStatusTracker in the copy constructor.
Assignee | ||
Comment 6•12 years ago
|
||
(In reply to Joe Drew (:JOEDREW! \o/) from comment #5)
> Next time flag me for needinfo - I caught this request but I won't always!
Sorry, but does that mean I should have sent you an e-mail?
BugZilla is not known for the good user interface for people who occasionally post to bugzilla (meaning for most users, that is.)
>
> (In reply to ISHIKAWA, chiaki from comment #2)
> > mImageStatus is set on line 543, and then again OR'ed with the original value
> > that was set. Strange, isnt'it? I susupect that line 543 is not wanted.
>
> I believe you're right. Good catch - do you want to write that patch?
>
Thank you for the feedback. I am going to upload a patch in my next post.
> (In reply to ISHIKAWA, chiaki from comment #4)
> > Looking at the stack, I wonder if, in the following sequence, we should
> > initialize the mImageStatus and mHasBeenDecoded field(?) as well.
> >
> >
> > https://mxr.mozilla.org/comm-central/source/mozilla/image/src/RasterImage.
> > h#394
> >
> > 394 DecodeRequest(RasterImage* aImage)
> > 395 : mImage(aImage)
> > 396 , mBytesToDecode(0)
> > 397 , mRequestStatus(REQUEST_INACTIVE)
> > 398 , mChunkCount(0)
> > 399 , mAllocatedNewFrame(false)
> > 400 {
> > 401 mStatusTracker = aImage->mStatusTracker->CloneForRecording();
> > 402 }
>
> That class doesn't actually have mImageStatus and mHasBeenDecoded members -
> did you mean to look at imgStatusTracker?
>
> In that case, we should *definitely* be initializing those class members of
> imgStatusTracker in the copy constructor.
Oh, MI must have looked at the wrong class (so similar looking
member names.
I wonder if someone in the know can explain the
transition of the status of the decoded image
from its creation to the destruction, especially the transient states,
and where the initial status set for "cloned" (?) images.
In the meantime, I gave up on trying to debug the current code, and
decided to make the bitfields data larger (at least to boolean)
so that I can take the address of the members in order to use
VALGRIND macro to figure out which is causing uninitialized error message from
memgrind.
E.g.:
diff --git a/image/src/imgStatusTracker.h b/image/src/imgStatusTracker.h
--- a/image/src/imgStatusTracker.h
+++ b/image/src/imgStatusTracker.h
@@ -239,14 +239,14 @@ private:
// List of proxies attached to the image. Each proxy represents a consumer
// using the image.
nsTObserverArray<imgRequestProxy*> mConsumers;
mozilla::RefPtr<imgDecoderObserver> mTrackerObserver;
uint32_t mState;
uint32_t mImageStatus;
- bool mIsMultipart : 1; <--- The address of bit field can not
- bool mHadLastPart : 1; <--- be taken and VALGRIND macro to
- bool mHasBeenDecoded : 1; <--- check the validity could not be used.
+ bool mIsMultipart /*: 1*/;
+ bool mHadLastPart /*: 1*/;
+ bool mHasBeenDecoded /*: 1*/;
};
#endif
Assignee | ||
Comment 7•12 years ago
|
||
This is the patch to remove the bogus (I think) assignment to mImageStatus.
Comment 8•12 years ago
|
||
(In reply to ISHIKAWA, Chiaki from comment #6)
> (In reply to Joe Drew (:JOEDREW! \o/) from comment #5)
> > Next time flag me for needinfo - I caught this request but I won't always!
>
> Sorry, but does that mean I should have sent you an e-mail?
> BugZilla is not known for the good user interface for people who
> occasionally post to bugzilla (meaning for most users, that is.)
Indeed! :)
What I meant is what's below these comment boxes, the checkbox "Need more information from [...]" - Select "other" there, and then put the email address of the person to whom you're asking a question.
Flags: needinfo?
Updated•12 years ago
|
Attachment #745488 -
Flags: review?(joe) → review+
Comment 9•12 years ago
|
||
(In reply to ISHIKAWA, Chiaki from comment #6)
> I wonder if someone in the know can explain the
> transition of the status of the decoded image
> from its creation to the destruction, especially the transient states,
> and where the initial status set for "cloned" (?) images.
I definitely have that information in my head!
Which status do you mean? imgStatusTracker::mImageStatus? imgStatusTracker::mState? Something else?
Assignee | ||
Comment 10•12 years ago
|
||
(In reply to Joe Drew (:JOEDREW! \o/) from comment #8)
> (In reply to ISHIKAWA, Chiaki from comment #6)
> > (In reply to Joe Drew (:JOEDREW! \o/) from comment #5)
> > > Next time flag me for needinfo - I caught this request but I won't always!
> >
> > Sorry, but does that mean I should have sent you an e-mail?
> > BugZilla is not known for the good user interface for people who
> > occasionally post to bugzilla (meaning for most users, that is.)
>
> Indeed! :)
>
> What I meant is what's below these comment boxes, the checkbox "Need more
> information from [...]" - Select "other" there, and then put the email
> address of the person to whom you're asking a question.
Aha, I am sorry that I missed this entry field. I was looking at the various fields only in the upper portion of the page :-(
I will do as instructed next time.
(In reply to Joe Drew (:JOEDREW! \o/) from comment #9)
> (In reply to ISHIKAWA, Chiaki from comment #6)
> > I wonder if someone in the know can explain the
> > transition of the status of the decoded image
> > from its creation to the destruction, especially the transient states,
> > and where the initial status set for "cloned" (?) images.
>
> I definitely have that information in my head!
>
> Which status do you mean? imgStatusTracker::mImageStatus?
> imgStatusTracker::mState? Something else?
I would like to ask you the transition of state for imgStatusTracker::mImageStatus because that seems to be where the
possible usage of uninitalized value happened.
*BUT*, after a couple of recent source refreshes in the last several days, and the fix posted in
https://bugzilla.mozilla.org/attachment.cgi?id=745488
somehow the uninitialized variable issue doesn't seem to occur any more !?
(So it could be that the problem has been solved by some changes in the code
not related to the patch above.)
So the original problem I reported seems to have been solved somehow (?), but
the problem I found in the code is for real, and
the posted patch above ought to be applied any way, I think.
I am using gcc, (Debian 4.7.2-5) 4.7.2, and ld.gold, GNU gold (GNU Binutils 2.23.2) 1.11, but I don't believe it has any bearings on the issue here.
In any case, learning how the status goes transition, it may be possible to
identity which change(s) solved the issue in the source code.
TIA
Assignee | ||
Updated•12 years ago
|
Keywords: checkin-needed
Comment 11•12 years ago
|
||
Keywords: checkin-needed
Comment 12•12 years ago
|
||
Status: NEW → RESOLVED
Closed: 12 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla23
You need to log in
before you can comment on or make changes to this bug.
Description
•