DynamoRIO / DynamoRIO/dynamorio

Shared deletion list is not naturally freed and triggers too many resets in V8 with JIT optimization

Open
#1,543 3 comments 0 reactions 0 assignees View on GitHub
Migrated Priority-Medium
Dominant language
C
Stars
3.2k
Forks
630
Avg merge
2d 13h
Merged PRs (30d)
31

Description

_From [byron.c....@gmail.com](https://code.google.com/u/101184679827294438523/) on September 17, 2014 20:32:07_

In a run of Octane on V8 with inference-based JIT optimization (not yet committed), all shared deletion list entries remain pending until the application exits. There are ~6,000 shared deletion list entries accumulated at that point. This is not a problem in Ion. It looks like this is caused by idle worker threads in V8, which never enter DR and therefore never clear their reference count on pending deletions.

This is probably also an issue in base DR (without JIT optimization), but it is much less of a problem because only a few shared fragments are individually deleted (most deletions occur via flush, which performs a synch).

_Original issue: http://code.google.com/p/dynamorio/issues/detail?id=1543_

Contributor guide

Open the contributing guide

Research direction

Start by reproducing the Octane run described in the issue with V8's inference-based JIT optimization, then trace the shared deletion list and idle worker-thread handling. Done means pending deletion entries are cleared naturally without accumulating thousands of entries or requiring excessive resets; the payload names no files or tests.

Written by the indexing model from the issue text.

Assessment

Tech stack
c
Domain
performance
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.