Open sl-service-account opened 10 years ago
Nicky Dasmijn commented at 2014-08-05T22:00:04Z
From my experience is that not really a windows specific error. For FS I heard from a quite a few Mac people the same. (I suspect crash reporting on Linux/Mac are not reliable after the breakpad windows OOP changes, but I might be wrong on that).
What in my opinion simply happens here, is that the memory gets fragmented and there's simply not enough continous memory to fullfil the request. The viewer code is not very memory friendly in that regard, as there's a lot of small allocations scattering all over the heap. For which the Win32 heap might be a bit worse then others.
Monty Linden commented at 2014-08-07T19:52:09Z, updated at 2014-08-07T19:55:41Z
@Nicky: All that is certainly possible (Mac, heap) but I'm not seeing any Mac with the signature. That may be because I haven't dug far enough down yet.
It looks like all the private pool stuff in llmemory.cpp is now dead code. Default settings disable it and it appears the crashers haven't accidentally enabled it. (Certain log messages should show up in case of allocation failure in this case.) Would like to report on the condition of process VM under failure here and see if we're not just doing something stupid in allocation like getting in the way of heap binning by the allocator.
Another thing specific to LLImage is that this allocation failure is lazy: while logging occurs immediately, failure is deferred for later (despite being inevitable). Then the failure happens all over: in KDU decode, in image scaling, in other operations. What would have been an unambiguous allocation error is now a dozen different failures. sigh
Nicky Dasmijn commented at 2014-08-07T21:18:32Z
I did speak with a few Mac peeps that had this issues (not enough for statistic relevance) And the Jira Brain told me, that Mac people suffer quite a bit from it. The private memory pool is dead indeed (which is a good thing) and everything is handled by the OS.
Regarding making the viewer more resilient against out of memory ... good luck with that :| It's like a journey around the world. BTDT. You come from the small to the big and all around over and over.
Whirly Fizzle commented at 2015-04-27T22:19:18Z
Possible case on Mac? BUG-9150
Whirly Fizzle commented at 2015-08-24T19:39:35Z
BUG-9959 looks like a case of this?
Steps to Reproduce
Normal operations. Viewer tends to be up and running.
Actual Behavior
Reviewing VCB reports of crashes from the library refresh viewer (https://osiris.lindenlab.com/viewer_crash_browser/index.php?filter_id=37217).
There's a common crash that's seen in all viewers associated with memory exhaustion in image allocation:
VCB: https://osiris.lindenlab.com/viewer_crash_browser/index.php?filter_id=37228
Log file signature shows allocation failures (which set a flag on the LLImage object) followed by a delayed LLERRS crash when that flag is later tested during ::getData():
Looking at llmemory.cpp quickly, this seems to be the result of a complicated, fussy and 64-bit-hostile design. Process working sets (this is a windows-only crash) are about 1GB so there's plenty of room, we're just hitting the private pool limit, I think, and dying in unrelated code. Really appears unnecessary.
Here's another manifestation:
In the above case, the allocation has failed likely leaving the image dimensions damaged (namely zero). A resize operation then fails on an assert_always() test as the resized image will be zero-length. Log file in this case looks like:
VCB: https://osiris.lindenlab.com/viewer_crash_browser/index.php?filter_id=37229
And another:
VCB: https://osiris.lindenlab.com/viewer_crash_browser/index.php?filter_id=37231
Expected Behavior
Not crash.
Other information
Links
Related
Original Jira Fields
| Field | Value | | ------------- | ------------- | | Issue | BUG-6883 | | Summary | Crash in LLImageBase::getData() due to arbitrary limits in heap management on Windows | | Type | Bug | | Priority | Unset | | Status | Accepted | | Resolution | Accepted | | Reporter | Monty Linden (monty.linden) | | Created at | 2014-08-05T16:11:51Z | | Updated at | 2016-06-27T17:46:23Z | ``` { 'Business Unit': ['Platform'], 'Date of First Response': '2014-08-05T17:00:03.862-0500', 'System': 'SL Viewer', 'Target Viewer Version': 'viewer-development', 'What just happened?': "Reviewing VCB reports of crashes from the library refresh viewer (https://osiris.lindenlab.com/viewer_crash_browser/index.php?filter_id=37217). \r\n\r\nThere's a common crash that's seen in all viewers associated with memory exhaustion in image allocation:\r\n\r\n{noformat}\r\n[Thread-Crashed] (No Notes) Filter on Call Stack\r\n[0] LLError::crashAndLoop(std::basic_string