Hello,
I'm diagnosing an crash issue when using CEF 3.3396.1779.g36f9eab / Chromium 67.0.3396.79 on windows 10.
I've collected a dmp of the application at the time of the exception and it appears that the CEF render process crashes due after OnNoMemory is called further on the stack after DoDecodeImage.
I am unable to reproduce this exact issue in my environment but can reproduce different out of memory crashes.
I've been testing the flag --max-old-space-size which I understand increases the amount of available JS heap size. I have observed that by specifying this flag that some crashes are alleviated (e.g. allocating many sizable arrays) but others are not (e.g. allocating very large strings).
So I am wondering if anyone knows whether specifying this flag would increase the amount of available memory for DoDecodeImage and help alleviate the crash?
If not, perhaps there is some other suggestion on how this crash can be avoided?
Crash callstack:
KERNELBASE.dll!_RaiseException@16 () Unknown
libcef.dll!base::`anonymous namespace'::OnNoMemory(unsigned int size) Line 55 C++
[External Code]
libcef.dll!discardable_memory::ClientDiscardableSharedMemoryManager::AllocateLockedDiscardableSharedMemory(unsigned int size, int id) Line 374 C++
libcef.dll!discardable_memory::ClientDiscardableSharedMemoryManager::AllocateLockedDiscardableMemory(unsigned int size) Line 219 C++
libcef.dll!cc::`anonymous namespace'::AllocateDiscardable(const SkImageInfo & info) Line 52 C++
libcef.dll!cc::SoftwareImageDecodeCacheUtils::DoDecodeImage(const cc::SoftwareImageDecodeCacheUtils::CacheKey & key, const cc::PaintImage & paint_image, SkColorType color_type) Line 68 C++
libcef.dll!cc::SoftwareImageDecodeCache::DecodeImageIfNecessary(const cc::SoftwareImageDecodeCacheUtils::CacheKey & key, const cc::PaintImage & paint_image, cc::SoftwareImageDecodeCacheUtils::CacheEntry * entry) Line 384 C++
libcef.dll!cc::SoftwareImageDecodeCache::GetDecodedImageForDrawInternal(const cc::SoftwareImageDecodeCacheUtils::CacheKey & key, const cc::PaintImage & paint_image) Line 527 C++
libcef.dll!cc::SoftwareImageDecodeCache::DecodeImageIfNecessary(const cc::SoftwareImageDecodeCacheUtils::CacheKey & key, const cc::PaintImage & paint_image, cc::SoftwareImageDecodeCacheUtils::CacheEntry * entry) Line 452 C++
libcef.dll!cc::SoftwareImageDecodeCache::DecodeImageInTask(const cc::SoftwareImageDecodeCacheUtils::CacheKey & key, const cc::PaintImage & paint_image, cc::SoftwareImageDecodeCache::DecodeTaskType task_type) Line 348 C++
libcef.dll!cc::`anonymous namespace'::SoftwareImageDecodeTaskImpl::RunOnWorkerThread() Line 95 C++
libcef.dll!content::CategorizedWorkerPool::RunTaskInCategoryWithLockAcquired(cc::TaskCategory category) Line 362 C++
libcef.dll!content::CategorizedWorkerPool::RunTaskWithLockAcquired(const std::vector<cc::TaskCategory,std::allocator<cc::TaskCategory> > & categories) Line 340 C++
libcef.dll!content::CategorizedWorkerPool::Run(const std::vector<cc::TaskCategory,std::allocator<cc::TaskCategory> > & categories, base::ConditionVariable * has_ready_to_run_tasks_cv) Line 232 C++
libcef.dll!content::`anonymous namespace'::CategorizedWorkerPoolThread::Run() Line 35 C++
libcef.dll!base::SimpleThread::ThreadMain() Line 69 C++
libcef.dll!base::`anonymous namespace'::ThreadFunc(void * params) Line 94 C++
Many thanks,
Grant