github / github/codeql-cli-binaries

Got CatastrophicError in com.semmle.inmemory.trap.TrapScanner

Open
#107 0 comments 0 reactions 0 assignees View on GitHub
CLI
Dominant language
No language data
Stars
1k
Forks
184
PR merge metrics
No merged PRs in 30d

Description

While compiling [chromium](https://www.chromium.org/Home) with CodeQL, I meet lots of CatastrophicError.

I build the chromium without CodeQL first, then I delete some compiled objects and recompile them with CodeQL.

The error log contains the error message in chromium but the chromium build process seems successful even with these error logs.

```
31250437_0.trap for no link target, 1715: com.semmle.util.exception.CatastrophicError: Bad Token: unexpected EOF, expected: rest of string. Read so far: "/home/dydxh/chrom
com.semmle.inmemory.trap.TrapScanner.failEOF(TrapScanner.java:143)
com.semmle.inmemory.trap.TrapScanner.stringBody(TrapScanner.java:195)
com.semmle.inmemory.trap.TrapScanner.nextToken(TrapScanner.java:111)
com.semmle.inmemory.trap.TRAPReader.scanOneField(TRAPReader.java:853)
com.semmle.inmemory.trap.TRAPReader.scanTuple(TRAPReader.java:590)
com.semmle.inmemory.trap.TRAPReader.scanTuplesAndLabels(TRAPReader.java:512)
com.semmle.inmemory.trap.TRAPReader.importTuples(TRAPReader.java:423)
com.semmle.inmemory.trap.ImportTasksProcessor.process(ImportTasksProcessor.java:191)
com.semmle.inmemory.trap.ImportTasksProcessor.lambda$importTrap$1(ImportTasksProcessor.java:151)
com.semmle.util.concurrent.FutureUtils.lambda$mapAsync_$8(FutureUtils.java:136)
java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(Unknown Source)
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
java.base/java.lang.Thread.run(Unknown Source)
37962707_0.trap for no link target, 1714: com.semmle.util.exception.CatastrophicError: Bad Token: unexpected EOF, expected: rest of string. Read so far: @"loc,{
com.semmle.inmemory.trap.TrapScanner.failEOF(TrapScanner.java:143)
com.semmle.inmemory.trap.TrapScanner.stringBody(TrapScanner.java:195)
com.semmle.inmemory.trap.TrapScanner.string(TrapScanner.java:224)
com.semmle.inmemory.trap.TrapScanner.nextToken(TrapScanner.java:119)
com.semmle.inmemory.trap.TRAPReader.scanOneField(TRAPReader.java:853)
com.semmle.inmemory.trap.TRAPReader.scanTuple(TRAPReader.java:590)
com.semmle.inmemory.trap.TRAPReader.scanTuplesAndLabels(TRAPReader.java:512)
com.semmle.inmemory.trap.TRAPReader.importTuples(TRAPReader.java:423)
com.semmle.inmemory.trap.ImportTasksProcessor.process(ImportTasksProcessor.java:191)
com.semmle.inmemory.trap.ImportTasksProcessor.lambda$importTrap$1(ImportTasksProcessor.java:151)
com.semmle.util.concurrent.FutureUtils.lambda$mapAsync_$8(FutureUtils.java:136)
java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(Unknown Source)
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
java.base/java.lang.Thread.run(Unknown Source)
```

or something like

```
15364014_0.trap for no link target, 928: com.semmle.util.exception.CatastrophicError: Bad Token: unexpected EOF, expected: rest of string. Read so far: """../../mojo/public/cpp/bindings/lib/message_quota_checker.h"", line 59: err
or: expression must have a constant value
static constexpr base::TimeDelta kSamplingInterval = base::Seconds(5);
^
""../../base/numerics/safe_math_clang_gcc_impl.h"", line 106: note: cannot call non-constexpr function ""__builtin_mul_overflow"" (declared implicitly)
: !__builtin_mul_overflow(x, y,
com.semmle.inmemory.trap.TrapScanner.failEOF(TrapScanner.java:143)
com.semmle.inmemory.trap.TrapScanner.stringBody(TrapScanner.java:195)
com.semmle.inmemory.trap.TrapScanner.nextToken(TrapScanner.java:111)
com.semmle.inmemory.trap.TRAPReader.scanOneField(TRAPReader.java:853)
com.semmle.inmemory.trap.TRAPReader.scanTuple(TRAPReader.java:590)
com.semmle.inmemory.trap.TRAPReader.scanTuplesAndLabels(TRAPReader.java:512)
com.semmle.inmemory.trap.TRAPReader.importTuples(TRAPReader.java:423)
com.semmle.inmemory.trap.ImportTasksProcessor.process(ImportTasksProcessor.java:191)
com.semmle.inmemory.trap.ImportTasksProcessor.lambda$importTrap$1(ImportTasksProcessor.java:151)
com.semmle.util.concurrent.FutureUtils.lambda$mapAsync_$8(FutureUtils.java:136)
java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(Unknown Source)
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
java.base/java.lang.Thread.run(Unknown Source)
```

Contributor guide

Open the contributing guide

Research direction

Start by reproducing the Chromium compilation with CodeQL and inspect the reported stack frames in TrapScanner.java and TRAPReader.java. Compare the malformed or truncated .trap inputs with the EOF handling at those entry points; done means the cause is identified and the reported CatastrophicError is prevented or handled correctly.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp, java
Domain
compilers, tooling
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.