Closed Bug 1382939 Opened 7 years ago Closed 7 years ago

Crash related to IndexedDB

Categories

(Core :: Storage: IndexedDB, defect, P5)

41 Branch
defect

Tracking

()

RESOLVED INVALID

People

(Reporter: keean, Unassigned)

Details

(Keywords: crash)

User Agent: Mozilla/5.0 (Windows NT 6.1; rv:41.0) Gecko/20100101 Firefox/41.0
Build ID: 20151014143721

Steps to reproduce:

Running some intensive IndexedDB queries that read and store data on Firefox 42.0.1 I get the following crash:


Actual results:

Here is the crash report

AbortMessage: [Parent 2336] ###!!! ABORT: IPDL error [PBackgroundIDBRequestChild]: "Error deserializing 'fileInfos' (intptr_t[]) member of 'SerializedStructuredCloneReadInfo'". abort()ing as a result.: file c:/builds/moz2_slave/rel-m-rel-w32_bld-000000000000/build/ipc/glue/ProtocolUtils.cpp, line 334
AdapterDeviceID: 0xbeef
AdapterDriverVersion: 5.0.32.0
AdapterSubsysID: 00000000
AdapterVendorID: 0x80ee
Add-ons: %7B972ce4c6-7e08-4474-a285-3208198ce6fd%7D:41.0.2,jid1-fRvgLzKONCsPew%40jetpack:0.2.7
AvailablePageFile: 477343744
AvailablePhysicalMemory: 239636480
AvailableVirtualMemory: 479379456
BIOS_Manufacturer: innotek GmbH
BlockedDllList: 
BreakpadReserveAddress: 32833536
BreakpadReserveSize: 67108864
BuildID: 20151014143721
CrashTime: 1500616312
EMCheckCompatibility: true
Email: 
FramePoisonBase: 00000000f0de0000
FramePoisonSize: 65536
InstallTime: 1493993117
Notes: AdapterVendorID: 0x80ee, AdapterDeviceID: 0xbeef, AdapterSubsysID: 00000000, AdapterDriverVersion: 5.0.32.0
D3D11 Layers- xpcom_runtime_abort([Parent 2336] ###!!! ABORT: IPDL error [PBackgroundIDBRequestChild]: "Error deserializing 'fileInfos' (intptr_t[]) member of 'SerializedStructuredCloneReadInfo'". abort()ing as a result.: file c:/builds/moz2_slave/rel-m-rel-w32_bld-000000000000/build/ipc/glue/ProtocolUtils.cpp, line 334)
ProductID: {ec8030f7-c20a-464f-9b0e-13a3a9e97384}
ProductName: Firefox
ReleaseChannel: release
SafeMode: 0
SecondsSinceLastCrash: 790
StartupTime: 1500615589
SystemMemoryUsePercentage: 77
TelemetryEnvironment: {"build":{"applicationId":"{ec8030f7-c20a-464f-9b0e-13a3a9e97384}","applicationName":"Firefox","architecture":"x86","buildId":"20151014143721","version":"41.0.2","vendor":"Mozilla","platformVersion":"41.0.2","xpcomAbi":"x86-msvc","hotfixVersion":null},"partner":{"distributionId":null,"distributionVersion":null,"partnerId":null,"distributor":null,"distributorChannel":null,"partnerNames":[]},"system":{"memoryMB":1024,"isWow64":false,"cpu":{"count":1,"vendor":null,"family":null,"model":null,"stepping":null,"extensions":["hasMMX","hasSSE","hasSSE2","hasSSE3","hasSSSE3","hasSSE4_1","hasSSE4_2"]},"os":{"name":"Windows_NT","version":"6.1","servicePackMajor":1,"servicePackMinor":0,"installYear":2013,"locale":"en-US"},"hdd":{"profile":{"model":"VBOX HARDDISK","revision":"1.0"},"binary":{"model":"VBOX HARDDISK","revision":"1.0"},"system":{"model":"VBOX HARDDISK","revision":"1.0"}},"gfx":{"D2DEnabled":false,"DWriteEnabled":false,"adapters":[{"description":"VirtualBox Graphics Adapter","vendorID":"0x80ee","deviceID":"0xbeef","subsysID":"00000000","RAM":null,"driver":"VBoxDisp","driverVersion":"5.0.32.0","driverDate":"1-16-2017","GPUActive":true}],"monitors":[{"screenWidth":2560,"screenHeight":1332,"refreshRate":60,"pseudoDisplay":false}]}},"settings":{"addonCompatibilityCheckEnabled":true,"blocklistEnabled":true,"isDefaultBrowser":true,"e10sEnabled":false,"telemetryEnabled":false,"isInOptoutSample":false,"locale":"en-GB","update":{"channel":"release","enabled":false,"autoDownload":false},"userPrefs":{"app.update.auto":false,"app.update.enabled":false,"app.update.service.enabled":false,"browser.cache.disk.capacity":358400,"browser.newtabpage.enhanced":true}},"profile":{"creationDate":17291},"addons":{"activeAddons":{"jid1-fRvgLzKONCsPew@jetpack":{"blocklisted":false,"description":"Tab Memory Usage displays the amount of memory is used by each tab","name":"Tab Memory Usage","userDisabled":false,"appDisabled":false,"version":"0.2.7","scope":1,"type":"extension","foreignInstall":false,"hasBinaryComponents":false,"installDay":17351,"updateDay":17351,"signedState":2}},"theme":{"id":"{972ce4c6-7e08-4474-a285-3208198ce6fd}","blocklisted":false,"description":"The default theme.","name":"Default","userDisabled":false,"appDisabled":false,"version":"41.0.2","scope":4,"foreignInstall":false,"hasBinaryComponents":false,"installDay":17291,"updateDay":17291},"activePlugins":[],"activeGMPlugins":{"gmp-gmpopenh264":{"version":"1.5.3","userDisabled":false,"applyBackgroundUpdates":1},"gmp-eme-adobe":{"version":"15","userDisabled":false,"applyBackgroundUpdates":1}},"activeExperiment":{},"persona":null}}
Theme: classic/1.0
Throttleable: 1
TotalPageFile: 2172182528
TotalPhysicalMemory: 1073274880
TotalVirtualMemory: 2147352576
URL: http://10.186.136.100/html5/
Vendor: Mozilla
Version: 41.0.2
Winsock_LSP: MSAFD Tcpip [TCP/IP] : 2 : 1 : %SystemRoot%\system32\mswsock.dll 
 MSAFD Tcpip [UDP/IP] : 2 : 2 :  
 MSAFD Tcpip [RAW/IP] : 2 : 3 : %SystemRoot%\system32\mswsock.dll 
 MSAFD Tcpip [TCP/IPv6] : 2 : 1 :  
 MSAFD Tcpip [UDP/IPv6] : 2 : 2 : %SystemRoot%\system32\mswsock.dll 
 MSAFD Tcpip [RAW/IPv6] : 2 : 3 :  
 RSVP TCPv6 Service Provider : 2 : 1 : %SystemRoot%\system32\mswsock.dll 
 RSVP TCP Service Provider : 2 : 1 :  
 RSVP UDPv6 Service Provider : 2 : 2 : %SystemRoot%\system32\mswsock.dll 
 RSVP UDP Service Provider : 2 : 2 :  
 MSAFD NetBIOS [\Device\NetBT_Tcpip_{A2692622-D935-45DD-BC6A-0FEA4F88524C}] SEQPACKET 3 : 2 : 5 : %SystemRoot%\system32\mswsock.dll 
 MSAFD NetBIOS [\Device\NetBT_Tcpip_{A2692622-D935-45DD-BC6A-0FEA4F88524C}] DATAGRAM 3 : 2 : 2 :  
 MSAFD NetBIOS [\Device\NetBT_Tcpip_{F5715A0B-5A70-451A-BFDD-1D39494152A1}] SEQPACKET 1 : 2 : 5 : %SystemRoot%\system32\mswsock.dll 
 MSAFD NetBIOS [\Device\NetBT_Tcpip_{F5715A0B-5A70-451A-BFDD-1D39494152A1}] DATAGRAM 1 : 2 : 2 :  
 MSAFD NetBIOS [\Device\NetBT_Tcpip6_{066F8867-DFB0-441A-82D4-1A68DC59CB04}] SEQPACKET 6 : 2 : 5 : %SystemRoot%\system32\mswsock.dll 
 MSAFD NetBIOS [\Device\NetBT_Tcpip6_{066F8867-DFB0-441A-82D4-1A68DC59CB04}] DATAGRAM 6 : 2 : 2 :  
 MSAFD NetBIOS [\Device\NetBT_Tcpip6_{E0BF89A4-3186-4298-920B-231C75AE911E}] SEQPACKET 5 : 2 : 5 : %SystemRoot%\system32\mswsock.dll 
 MSAFD NetBIOS [\Device\NetBT_Tcpip6_{E0BF89A4-3186-4298-920B-231C75AE911E}] DATAGRAM 5 : 2 : 2 :  
 MSAFD NetBIOS [\Device\NetBT_Tcpip6_{A2692622-D935-45DD-BC6A-0FEA4F88524C}] SEQPACKET 4 : 2 : 5 : %SystemRoot%\system32\mswsock.dll 
 MSAFD NetBIOS [\Device\NetBT_Tcpip6_{A2692622-D935-45DD-BC6A-0FEA4F88524C}] DATAGRAM 4 : 2 : 2 :  
 MSAFD NetBIOS [\Device\NetBT_Tcpip6_{8287407F-E4D9-4618-A04B-846F9D6E7608}] SEQPACKET 0 : 2 : 5 : %SystemRoot%\system32\mswsock.dll 
 MSAFD NetBIOS [\Device\NetBT_Tcpip6_{8287407F-E4D9-4618-A04B-846F9D6E7608}] DATAGRAM 0 : 2 : 2 :  
 MSAFD NetBIOS [\Device\NetBT_Tcpip6_{F5715A0B-5A70-451A-BFDD-1D39494152A1}] SEQPACKET 2 : 2 : 5 : %SystemRoot%\system32\mswsock.dll 
 MSAFD NetBIOS [\Device\NetBT_Tcpip6_{F5715A0B-5A70-451A-BFDD-1D39494152A1}] DATAGRAM 2 : 2 : 2 : 
useragent_locale: en-GB

This report also contains technical information about the state of the application when it crashed.


Expected results:

It should not crash :-)

Actually I am restricted to the released version of Firefox 42.0.1 (because I am using xulrunner), so I am not looking for a bug-fix (it is probably fixed already), I am looking to understand what caused the crash, so I can find a work-around in JavaScript to avoid the crash in the first place.
Component: Untriaged → DOM: IndexedDB
Keywords: crash
Product: Firefox → Core
According to that this issue is on a very old version firefox 42, this is a very very low priority for us.
I am looping some IDB folks in and see if they have thoughts to share.
Priority: -- → P5
I appreciate it is a low priority, however version 42 is still the current release of xulrunner.
(In reply to keean from comment #2)
> I appreciate it is a low priority, however version 42 is still the current
> release of xulrunner.

I believe you can still use any release of Firefox like it's xulrunner.  "firefox -app application.ini"  Note, however, that this doesn't make it any more officially supported, it just means you can use more recent versions of Firefox.

This particular problem looks like it's case of insufficient memory or memory address space (possibly due to fragmentation, but it could also just be insufficient memory).  The crash report seems to indicate the system only has 1GiB of physical memory, 2GiB of page-file, and 2GiB of address space accessible to Firefox in total.  You should probably be able to bring up "about:memory" in xulrunner or in a modern version of Firefox using "-app" which may help shed some light on what's using up memory and/or address space.  You may be also able to trigger devtools, although I'm not sure.

In general, I think the best advice I can give is:
- Retrieve less at a time from IndexedDB.  For example, use cursors or use smaller limits if using mozGetAll, things like that.
- Consider triggering (full) garbage collections more frequently via https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMWindowUtils#garbageCollect() or https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Language_Bindings/Components.utils.forceGC or other methods.
- Favor use of Blobs over typed arrays/array buffers if you won't always need access to large hunks of data when retrieving them.  Make sure that once you store a blob into IndexedDB you read it back and forget the original blob you put in so your memory-backed blob can be freed.
- Try running on a machine with more memory.  We now have 64-bit builds of Firefox for windows, plus 32-bit builds of Firefox are happier on 64-bits of windows, so it's possible to reduce/eliminate issues.  This may not be possible for a variety of reasons, 

This is definitely something that's not actionable from an IndexedDB perspective, so I'm going to mark this invalid.  I'm honestly not too sure where the developer community for xulrunner-type things hangs out, but I'd suggest if you experience additional issues, to check out:
- The add-ons discourse (although I presume there are active efforts to move discussion to just being about webextensions): https://discourse.mozilla-community.org/c/add-ons/development
- Maybe something listed at https://www.mozilla.org/en-US/about/forums/?  I was thinking we used to have newsgroups active in this area, but maybe I'm wrong.
Status: UNCONFIRMED → RESOLVED
Closed: 7 years ago
Resolution: --- → INVALID
(In reply to Andrew Sutherland [:asuth] from comment #3)
> This may not be possible for a variety of reasons, 

Whoops, didn't finish my thought.  Mainly, I know extra resources may not be available or the specific goal may be to use existing resources, but this specific crash is an indication of a case where throwing resources at the problem is a quick and easy fix.
Thanks for the response, I have done some profiling. I am retrieving 16meg chunks from indexeddb processing and writing again. The memory problem appears due to memory pressure, as there is no way to wait for the writes to complete it slowly runs out of buffer space. This is a time critical operation, so I don't want to do smaller chunks as it would be even slower. Ideally I want to do larger chunks. Blobs are worse because they do not commit to disk immediately either, and just make the whole memory pressure problem worse, as you force commit and you cannot wait until they have written. Experimentally Blobs make the application even more memory unstable. The target system for this application is 32bit with 1GB of RAM, and as it is reading 16meg chunks this is plenty. 

What I am writing is a single page app, but it needs to run in a specific version of Firefox, at least for now that is fixed at v42, however v51 may be supported eventually.

I think the issue is to do with the API and therefore is not fixed in newer versions, although they do seem to behave a bit better.

What really needs to happen is that VM and write buffers need to be in a unified buffer cache (like the linux kernel does for example), so that memory allocation can be aware of space in write buffers, and can force a flush and wait for the buffer space to be free. Memory allocation should only fail if the free RAM plus pending write buffer space is smaller than the requested memory size.
(In reply to Andrew Sutherland [:asuth] from comment #4)
> (In reply to Andrew Sutherland [:asuth] from comment #3)
> > This may not be possible for a variety of reasons, 
> 
> Whoops, didn't finish my thought.  Mainly, I know extra resources may not be
> available or the specific goal may be to use existing resources, but this
> specific crash is an indication of a case where throwing resources at the
> problem is a quick and easy fix

Forgot to use reply, so my response is just a normal comment.
If you're retrieving data from IndexedDB and writing it back to IndexedDB without applying a transformation, then Blobs will be beneficial.  They're stored separately from the structured clone data as reference-counted files on disk.  This avoids unnecessary reads, writes, and IPC traffic.  (Especially since I'm assuming you're necessarily running single process, and same-process blobs don't have to be serialized.)

Also note that Blobs are, for all intents and purposes, written to disk at the same time their content would have been written if they were arraybuffers.  And because of the reference counting, they're only written to disk the first time they are used in a transaction.  They also may exhibit superior I/O characteristics since they're written as append-only new files and aren't subject to SQLite's WAL or page-centric storage (which can result in fragmentation if the pages aren't being added to the end of the database).  Note that Firefox 52 has a major improvement here with bug 964561 where large structured clones (>=1MiB) get stored outside the database like they were blobs.  It's likely upgrading to 52+ would result in a major I/O win for that reason.

That said, if every byte of data from a record you retrieve will need to be processed, blobs will potentially be a net loss over using arraybuffers since the act of creating the blob currently will duplicate the contents of its source arraybuffer and then you're more dependent on GC than you'd otherwise be.  However, this can again be mitigated by ensuring you've dropped references to the source arraybuffer and the blob and forcing a GC.

Re: "as there is no way to wait for the writes to complete", I'm a little confused.  You can absolutely wait for the IDBRequest.onsuccess event to know when the data has hit disk in a speculative SQLite transaction, thereby knowing when the memory from the write request has been freed (for non-blobs).  And you can also wait for the IDBTransaction.oncomplete event to know when that transaction has been durably committed (which also implies all of the requests have fired their success events already).  This should provide for adequate flow control and largely saturate device I/O, but you can reduce chunk sizes and have more requests/transactions in flight at a given time if necessary.

re: fancier buffering strategies, it's possible SharedArrayBuffers may eventually provide affordances along these lines, but we're not there yet.
This is apparently from the docs somewhere:

> Note that as of Firefox 40, IndexedDB transactions have relaxed durability guarantees to increase performance (see bug 1112702.) Previously in a readwrite transaction IDBTransaction.oncomplete was fired only when all data was guaranteed to have been flushed to disk. In Firefox 40+ the complete event is fired after the OS has been told to write the data but potentially before that data has actually been flushed to disk.

I am processing every byte at one point (from ciphertext to plaintext using webcrypto), but I also shuffle the data at other points (XMLHttpRequest fetch to indexeddb as 16meg chunks. Then read 16meg chunk decrypt and write back, finally data is uncompressed by streaming  a the 16 meg chunks and split into separate resources written back to indexeddb.

Either I have an elusive memory leak, or the delay in releasing the write buffers is causing eventual memory starvation. I am careful about setting arraybuffers and blobs to null after writing to indexeddb.
This is the latest crash report:

AdapterDeviceID: 0xbeef
AdapterDriverVersion: 5.0.32.0
AdapterSubsysID: 00000000
AdapterVendorID: 0x80ee
Add-ons: %7B972ce4c6-7e08-4474-a285-3208198ce6fd%7D:41.0.2,jid1-fRvgLzKONCsPew%40jetpack:0.2.7
AvailablePageFile: 840359936
AvailablePhysicalMemory: 238616576
AvailableVirtualMemory: 691482624
BIOS_Manufacturer: innotek GmbH
BlockedDllList: 
BreakpadReserveAddress: 30015488
BreakpadReserveSize: 67108864
BuildID: 20151014143721
CrashTime: 1500704975
EMCheckCompatibility: true
Email: 
EventLoopNestingLevel: 1
FramePoisonBase: 00000000f0de0000
FramePoisonSize: 65536
InstallTime: 1493993117
Notes: AdapterVendorID: 0x80ee, AdapterDeviceID: 0xbeef, AdapterSubsysID: 00000000, AdapterDriverVersion: 5.0.32.0
D3D11 Layers- 
OOMAllocationSize: 16777276
ProductID: {ec8030f7-c20a-464f-9b0e-13a3a9e97384}
ProductName: Firefox
ReleaseChannel: release
SafeMode: 0
SecondsSinceLastCrash: 41836
StartupTime: 1500672944
SystemMemoryUsePercentage: 77
TelemetryEnvironment: {"build":{"applicationId":"{ec8030f7-c20a-464f-9b0e-13a3a9e97384}","applicationName":"Firefox","architecture":"x86","buildId":"20151014143721","version":"41.0.2","vendor":"Mozilla","platformVersion":"41.0.2","xpcomAbi":"x86-msvc","hotfixVersion":null},"partner":{"distributionId":null,"distributionVersion":null,"partnerId":null,"distributor":null,"distributorChannel":null,"partnerNames":[]},"system":{"memoryMB":1024,"isWow64":false,"cpu":{"count":1,"vendor":null,"family":null,"model":null,"stepping":null,"extensions":["hasMMX","hasSSE","hasSSE2","hasSSE3","hasSSSE3","hasSSE4_1","hasSSE4_2"]},"os":{"name":"Windows_NT","version":"6.1","servicePackMajor":1,"servicePackMinor":0,"installYear":2013,"locale":"en-US"},"hdd":{"profile":{"model":"VBOX HARDDISK","revision":"1.0"},"binary":{"model":"VBOX HARDDISK","revision":"1.0"},"system":{"model":"VBOX HARDDISK","revision":"1.0"}},"gfx":{"D2DEnabled":false,"DWriteEnabled":false,"adapters":[{"description":"VirtualBox Graphics Adapter","vendorID":"0x80ee","deviceID":"0xbeef","subsysID":"00000000","RAM":null,"driver":"VBoxDisp","driverVersion":"5.0.32.0","driverDate":"1-16-2017","GPUActive":true}],"monitors":[{"screenWidth":2560,"screenHeight":1332,"refreshRate":60,"pseudoDisplay":false}]}},"settings":{"addonCompatibilityCheckEnabled":true,"blocklistEnabled":true,"isDefaultBrowser":true,"e10sEnabled":false,"telemetryEnabled":false,"isInOptoutSample":false,"locale":"en-GB","update":{"channel":"release","enabled":false,"autoDownload":false},"userPrefs":{"app.update.auto":false,"app.update.enabled":false,"app.update.service.enabled":false,"browser.cache.disk.capacity":358400,"browser.newtabpage.enhanced":true}},"profile":{"creationDate":17291},"addons":{"activeAddons":{"jid1-fRvgLzKONCsPew@jetpack":{"blocklisted":false,"description":"Tab Memory Usage displays the amount of memory is used by each tab","name":"Tab Memory Usage","userDisabled":false,"appDisabled":false,"version":"0.2.7","scope":1,"type":"extension","foreignInstall":false,"hasBinaryComponents":false,"installDay":17351,"updateDay":17351,"signedState":2}},"theme":{"id":"{972ce4c6-7e08-4474-a285-3208198ce6fd}","blocklisted":false,"description":"The default theme.","name":"Default","userDisabled":false,"appDisabled":false,"version":"41.0.2","scope":4,"foreignInstall":false,"hasBinaryComponents":false,"installDay":17291,"updateDay":17291},"activePlugins":[],"activeGMPlugins":{"gmp-gmpopenh264":{"version":"1.5.3","userDisabled":false,"applyBackgroundUpdates":1},"gmp-eme-adobe":{"version":"15","userDisabled":false,"applyBackgroundUpdates":1}},"activeExperiment":{},"persona":null}}
Theme: classic/1.0
Throttleable: 1
TotalPageFile: 2172182528
TotalPhysicalMemory: 1073274880
TotalVirtualMemory: 2147352576
URL: http://10.186.136.100/html5/
Vendor: Mozilla
Version: 41.0.2
Winsock_LSP: MSAFD Tcpip [TCP/IP] : 2 : 1 : %SystemRoot%\system32\mswsock.dll 
 MSAFD Tcpip [UDP/IP] : 2 : 2 :  
 MSAFD Tcpip [RAW/IP] : 2 : 3 : %SystemRoot%\system32\mswsock.dll 
 MSAFD Tcpip [TCP/IPv6] : 2 : 1 :  
 MSAFD Tcpip [UDP/IPv6] : 2 : 2 : %SystemRoot%\system32\mswsock.dll 
 MSAFD Tcpip [RAW/IPv6] : 2 : 3 :  
 RSVP TCPv6 Service Provider : 2 : 1 : %SystemRoot%\system32\mswsock.dll 
 RSVP TCP Service Provider : 2 : 1 :  
 RSVP UDPv6 Service Provider : 2 : 2 : %SystemRoot%\system32\mswsock.dll 
 RSVP UDP Service Provider : 2 : 2 :  
 MSAFD NetBIOS [\Device\NetBT_Tcpip_{A2692622-D935-45DD-BC6A-0FEA4F88524C}] SEQPACKET 3 : 2 : 5 : %SystemRoot%\system32\mswsock.dll 
 MSAFD NetBIOS [\Device\NetBT_Tcpip_{A2692622-D935-45DD-BC6A-0FEA4F88524C}] DATAGRAM 3 : 2 : 2 :  
 MSAFD NetBIOS [\Device\NetBT_Tcpip_{F5715A0B-5A70-451A-BFDD-1D39494152A1}] SEQPACKET 1 : 2 : 5 : %SystemRoot%\system32\mswsock.dll 
 MSAFD NetBIOS [\Device\NetBT_Tcpip_{F5715A0B-5A70-451A-BFDD-1D39494152A1}] DATAGRAM 1 : 2 : 2 :  
 MSAFD NetBIOS [\Device\NetBT_Tcpip6_{066F8867-DFB0-441A-82D4-1A68DC59CB04}] SEQPACKET 6 : 2 : 5 : %SystemRoot%\system32\mswsock.dll 
 MSAFD NetBIOS [\Device\NetBT_Tcpip6_{066F8867-DFB0-441A-82D4-1A68DC59CB04}] DATAGRAM 6 : 2 : 2 :  
 MSAFD NetBIOS [\Device\NetBT_Tcpip6_{E0BF89A4-3186-4298-920B-231C75AE911E}] SEQPACKET 5 : 2 : 5 : %SystemRoot%\system32\mswsock.dll 
 MSAFD NetBIOS [\Device\NetBT_Tcpip6_{E0BF89A4-3186-4298-920B-231C75AE911E}] DATAGRAM 5 : 2 : 2 :  
 MSAFD NetBIOS [\Device\NetBT_Tcpip6_{A2692622-D935-45DD-BC6A-0FEA4F88524C}] SEQPACKET 4 : 2 : 5 : %SystemRoot%\system32\mswsock.dll 
 MSAFD NetBIOS [\Device\NetBT_Tcpip6_{A2692622-D935-45DD-BC6A-0FEA4F88524C}] DATAGRAM 4 : 2 : 2 :  
 MSAFD NetBIOS [\Device\NetBT_Tcpip6_{8287407F-E4D9-4618-A04B-846F9D6E7608}] SEQPACKET 0 : 2 : 5 : %SystemRoot%\system32\mswsock.dll 
 MSAFD NetBIOS [\Device\NetBT_Tcpip6_{8287407F-E4D9-4618-A04B-846F9D6E7608}] DATAGRAM 0 : 2 : 2 :  
 MSAFD NetBIOS [\Device\NetBT_Tcpip6_{F5715A0B-5A70-451A-BFDD-1D39494152A1}] SEQPACKET 2 : 2 : 5 : %SystemRoot%\system32\mswsock.dll 
 MSAFD NetBIOS [\Device\NetBT_Tcpip6_{F5715A0B-5A70-451A-BFDD-1D39494152A1}] DATAGRAM 2 : 2 : 2 : 
useragent_locale: en-GB

This report also contains technical information about the state of the application when it crashed.

I wonder if it is memory fragmentation?
(In reply to Andrew Sutherland [:asuth] from comment #7)
> If you're retrieving data from IndexedDB and writing it back to IndexedDB ...

It's very odd, if I pause the operations in the middle and look at free memory, the code is using 8.7 Meg, yet it still runs out of memory in the process. It really looks like it cannot reclaim the used memory fast enough, and I don't think I can force a GC from normal JavaScript inside Firefox.
If you're a XULRunner app, that means you have a top-level XUL window somewhere.  The JavaScript in that window runs with the system ("chrome") principal, has the Components magic global available, and can do anything.  You only lose this principal once you nest content inside a XUL iframe with type=content/content-primary/content-targetable.  See https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XUL/iframe#a-browser.type and the links I provided previously on triggering GC's.  You should be able to find specific uses of them in varying contexts by using https://searchfox.org./
You need to log in before you can comment on or make changes to this bug.