DynamoRIO / DynamoRIO/dynamorio

Long hashtable collisions when running Octane in V8

Open
#1,544 1 comment 0 reactions 0 assignees View on GitHub
Migrated Priority-Medium
Dominant language
C
Stars
3.2k
Forks
629
Avg merge
2d 18h
Merged PRs (30d)
30

Description

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

After sorting the logs like
$(grep "collision" | cut -d ':' -f 2 | sort | uniq -c"):

```
2 Current future table fragment_lookup collisions
20 Current indcall_trace table bb ibl indcall collisions
20 Current indcall_trace table fragment_lookup collisions
20 Current indcall_trace table trace ibl indcall collisions
10 Current indjmp_trace table bb ibl indjmp collisions
10 Current indjmp_trace table fragment_lookup collisions
10 Current indjmp_trace table trace ibl indjmp collisions
36 Current ret_trace table bb ibl ret collisions
36 Current ret_trace table fragment_lookup collisions
36 Current ret_trace table trace ibl ret collisions
16 Current shared_bb table fragment_lookup collisions
16 Current shared_future table fragment_lookup collisions
14 Current shared_trace table fragment_lookup collisions
20 long collision sequence ... indcall_trace table
2 Current DGC Emulation Plans table fragment_lookup collisions
2 table collision cluster is too large" in ... hashtablex.h line 905
```

The reported collisions range in length from 100 to millions, usually with zero overwrap but sometimes thousands.

The full logs (at level 1) are ~150MB, so I just attached the $(grep "collision") slice. Note that the run was terminated about at about 30% because it takes a really long time in a debug build.

**Attachment:** [v8-octane.collisions.log](http://code.google.com/p/dynamorio/issues/detail?id=1544)

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

Contributor guide

Open the contributing guide

Research direction

Start with the attached v8-octane.collisions.log and inspect hashtablex.h around line 905, then trace the collision reporting for the named tables while reproducing the Octane run in a debug build. Done means identifying why collision sequences reach 100 to millions and confirming the behavior no longer causes the reported slowdown or oversized collision clusters.

Written by the indexing model from the issue text.

Assessment

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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.