Skip to content

IndexOutOfBoundsException while analyzing PTA call graph for HSQLDB-2.7.4 #219

Description

@svenkeidel

📝 Overall Description

Hi,

Thanks for your hard work on Tai-e.

I encountered an IndexOutOfBoundsException while computing a PTA call graph for HSQLDB-2.7.4. CHA works fine.

Regards,
Sven

🎯 Expected Behavior

Analysis finishes without exception

🐛 Current Behavior

PTA call graph algorithm crashes with IndexOutOfBoundsException.

java -jar tai-e-all-0.5.4-SNAPSHOT.jar --main-class Entrypoint -java 25 --jre-dir /opt/jdk-25.0.3+9 --class-path /repo/entrypoint.jar:/repo/hsqldb-2.7.4.jar:/repo/sqltool-2.7.4.jar -scope ALL -a cg=algorithm:pta;dump:true;dump-methods:true --output-dir /tmp/tai-e10574779439875069482                                                                                                                                          
[Tai-e] starts ...                                                                                                                                                                                                                            
Output directory: /tmp/tai-e10574779439875069482                                                                                                                                                                                              
Writing options to /tmp/tai-e10574779439875069482/options.yml                                                                                                                                                                                 
Writing log to /tmp/tai-e10574779439875069482/tai-e.log                                                                                                                                                                                       
java.version: 25.0.3                                                                                                                                                                                                                          
java.version.date: 2026-04-21                                                                                                                                                                                                                 
java.runtime.version: 25.0.3+9-LTS                                                                                                                                                                                                            
java.vendor: Eclipse Adoptium                                                                                                                                                                                                                 
java.vendor.version: Temurin-25.0.3+9                                                                                                                                                                                                         
os.name: Linux                                                                                                                                                                                                                                
os.version: 6.8.0-137-generic                                                                                                                                                                                                                 
os.arch: amd64                                                                                                                                                                                                                                
Available CPU cores: 160                                                                                                                                                                                                                      
Total memory: 2063668MB                                                                                                                                                                                                                       
Tai-e Version: 0.5.4-SNAPSHOT                                                                                                                                                                                                                 
Tai-e Commit: b2c584de67df5eb1b0b894687c2a085e1420f5a4
Writing analysis plan to /tmp/tai-e10574779439875069482/tai-e-plan.yml
[WorldBuilder] starts ...

Failed to resolve class java.lang.invoke.BoundMethodHandle$Species_J; resolving phantom class instead.
Failed to resolve class java.lang.invoke.BoundMethodHandle$Species_F; resolving phantom class instead.
7985 classes with 86300 methods in the world
[WorldBuilder] elapsed time: 1.40s; CPU usage: start 1.00%, peak 11.41%, end 43.67%; Memory usage: start 72MB, peak 488MB, end 649MB
[pta] starts ...
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 1 Size: 1
        at java.base/java.util.ImmutableCollections$AbstractImmutableList.outOfBounds(ImmutableCollections.java:359)
        at java.base/java.util.ImmutableCollections$List12.get(ImmutableCollections.java:612)
        at pascal.taie.ir.DefaultIR.getParam(DefaultIR.java:92)
        at pascal.taie.analysis.pta.core.solver.DefaultSolver.processCallEdge(DefaultSolver.java:518)
        at pascal.taie.analysis.pta.core.solver.DefaultSolver.analyze(DefaultSolver.java:327)
        at pascal.taie.analysis.pta.core.solver.DefaultSolver.solve(DefaultSolver.java:250)
        at pascal.taie.analysis.pta.PointerAnalysis.runAnalysis(PointerAnalysis.java:120)
        at pascal.taie.analysis.pta.PointerAnalysis.analyze(PointerAnalysis.java:108)
        at pascal.taie.analysis.pta.PointerAnalysis.analyze(PointerAnalysis.java:65)
        at pascal.taie.analysis.AnalysisManager.runProgramAnalysis(AnalysisManager.java:148)
        at pascal.taie.analysis.AnalysisManager.runAnalysis(AnalysisManager.java:135)
        at pascal.taie.analysis.AnalysisManager.lambda$execute$0(AnalysisManager.java:104)
        at pascal.taie.util.Monitor.runAndCount(Monitor.java:249)
        at pascal.taie.analysis.AnalysisManager.lambda$execute$1(AnalysisManager.java:103)
        at java.base/java.util.ArrayList.forEach(ArrayList.java:1604)
        at pascal.taie.analysis.AnalysisManager.execute(AnalysisManager.java:102)
        at pascal.taie.Main.executePlan(Main.java:155)
        at pascal.taie.Main.lambda$main$0(Main.java:61)
        at pascal.taie.util.Monitor.lambda$runAndCount$1(Monitor.java:280)
        at pascal.taie.util.Monitor.runAndCount(Monitor.java:249)
        at pascal.taie.util.Monitor.runAndCount(Monitor.java:279)
        at pascal.taie.util.Monitor.runAndCount(Monitor.java:265)
        at pascal.taie.Main.main(Main.java:51)

🔄 Reproducible Example

Here are the jars for you to reproduce: hsqldb-2.7.4-jars.tar.gz

⚙️ Tai-e Arguments

📜 Tai-e Log

No response

ℹ️ Additional Information

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions