Skip to content

External predicate recording multiple values #19140

Open
@jghebre

Description

@jghebre

Hi,

I'm using an external predicate to read in csv data and apply these to the overrided predicate step in DataFlow::SharedFlowStep. This is nice because it allows me to make changes to the entire Dataflow easily, which is what I want.

This works, but for certain queries I get this error:

Oops! A fatal internal error occurred. Details:
java.lang.IllegalStateException: Tried to record two values for the extensional patchInfo. Old value: {[0, 29, foo, example.js, 5, example.js, false]}. New value: {[0, 29, foo, example.js, 5, example.js, false]}
        at com.semmle.api.backend.ExtensionalValuesBase.put(ExtensionalValuesBase.java:82)
        at com.semmle.cli2.execute.ExecuteQueriesCommand.loadExtensionals(ExecuteQueriesCommand.java:395)
        at com.semmle.cli2.execute.ExecuteQueriesCommand$ExecutionIterator.startImpl(ExecuteQueriesCommand.java:235)
        at com.semmle.cli2.execute.ExecuteQueriesCommand$ExecutionIterator.start(ExecuteQueriesCommand.java:192)
        at com.semmle.cli2.execute.ExecuteQueriesCommand$ExecutionIterator.lambda$next$0(ExecuteQueriesCommand.java:187)
        at com.semmle.util.concurrent.FutureUtils.supplyCompose(FutureUtils.java:248)
        at com.semmle.util.concurrent.Paralleliser.lambda$startMoreJobs$3(Paralleliser.java:109)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.base/java.lang.Thread.run(Unknown Source)

I'm pretty positive this is occurring due to another file using DataFlow::SharedFlowStep::step which hits the external predicate more than once and causes errors.

I'm not sure if there is a way around this by perhaps:

  • only loading the external predicate once
  • forcing my class that overrides DataFlow::SharedFlowStep::step to run last
    or some other fix.

Thanks!

Metadata

Metadata

Assignees

No one assigned

    Labels

    awaiting-responseThe CodeQL team is awaiting further input or clarification from the original reporter of this issue.questionFurther information is requested

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions