github / github/codeql-cli-binaries

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

オープン
#107 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る
CLI
主要言語
言語のデータがありません
スター
1k
フォーク
184
PR マージ指標
30日以内にマージされた PR はありません

説明

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)
```

コントリビューションガイド

コントリビューションガイドを開く

調査の方向性

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.

索引モデルが issue の本文から書いたものです。

評価

技術スタック
cpp, java
領域
compilers, tooling
issue の種類
バグ
難易度
4/5
見積もり時間
3〜5日
活発さ
停滞
明瞭さ
説明が足りない
初心者へのやさしさ
25/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。