Indirect-leak in uprv_malloc_60 |
||||
Issue descriptionDetailed report: https://clusterfuzz.com/testcase?key=5081530660814848 Fuzzer: ochang_js_fuzzer Job Type: linux_asan_d8_dbg Platform Id: linux Crash Type: Indirect-leak Crash Address: Crash State: uprv_malloc_60 icu_60::UMemory::operator new icu_60::DecimalFormat::operator= Sanitizer: address (ASAN) Regressed: https://clusterfuzz.com/revisions?job=linux_asan_d8_dbg&range=50376:50377 Reproducer Testcase: https://clusterfuzz.com/download?testcase_id=5081530660814848 Issue filed automatically. See https://github.com/google/clusterfuzz-tools for more information.
,
Jan 17 2018
This memory leak only exists because d8 is shutting down while a WebAssembly compilation is still running. If d8 waited for the compilation to complete, the memory would be deallocated correctly. The problem seems to be that the WebAssembly compilation indirectly holds a reference to the Managed object of the "leaking" memory. Therefore the GC which runs when d8 shuts down does not deallocate the memory. WebAssembly compilation is stopped when the isolate tears down, which happens after this final GC. A GC after the WebAssembly compilation would deallocate the memory, but since the isolate is torn down already at that point, we cannot run the GC anymore. I reduce the priority because this memory leak is only an artifact of the d8 shutdown sequence.
,
Jan 17 2018
We should still try to find out what actually keeps the ICU object alive (i.e. track the retaining path). Maybe we can use weak references or just reference less objects from the compilation job.
,
Jan 19 2018
Here is a smaller repro.
,
Feb 13 2018
ClusterFuzz testcase 5081530660814848 is flaky and no longer crashes, so closing issue. If this is incorrect, please add ClusterFuzz-Wrong label and re-open the issue. |
||||
►
Sign in to add a comment |
||||
Comment 1 by clemensh@chromium.org
, Jan 17 2018Owner: ahaas@chromium.org
Status: Assigned (was: Untriaged)