Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Git仓库审核:在解析Java文件时Panic #2970

Closed
winfredLIN opened this issue Mar 12, 2025 · 0 comments
Closed

Git仓库审核:在解析Java文件时Panic #2970

winfredLIN opened this issue Mar 12, 2025 · 0 comments
Assignees
Labels
bug Something isn't working publish-pre3
Milestone

Comments

@winfredLIN
Copy link
Collaborator

winfredLIN commented Mar 12, 2025

版本信息(Version)

3.2411

问题描述(Describe)

在审核带有.java文件的git仓库时,Java解析器Panic

截图或日志(Log)

goroutine 6925065 [running]:
net/http.(*conn).serve.func1()
        /usr/local/go/src/net/http/server.go:1850 +0xbf
panic({0x1a70860, 0x38d8260})
        /usr/local/go/src/runtime/panic.go:890 +0x262
github.com/actiontech/java-sql-extractor/parser.(*JavaVisitor).VisitExpression(0xc095c319f0, 0xc0978bfd90)
        **/universe/vendor/github.com/actiontech/java-sql-extractor/parser/visitor.go:306 +0x1bf**
github.com/actiontech/java-sql-extractor/parser.(*JavaVisitor).VisitStatement(0xc095c319f0, 0x7fe46ecf5460?)
        /universe/vendor/github.com/actiontech/java-sql-extractor/parser/visitor.go:265 +0xa5
github.com/actiontech/java-sql-extractor/parser.(*JavaVisitor).VisitBlockStatement(0xc095c319f0, 0x21c7950?)
        /universe/vendor/github.com/actiontech/java-sql-extractor/parser/visitor.go:233 +0x225
github.com/actiontech/java-sql-extractor/parser.(*JavaVisitor).VisitBlock(0xc095c319f0, 0xc0978fc880)
        /universe/vendor/github.com/actiontech/java-sql-extractor/parser/visitor.go:219 +0xdf
github.com/actiontech/java-sql-extractor/parser.(*JavaVisitor).VisitStatement(0xc095c319f0, 0xc0978be790?)
        /universe/vendor/github.com/actiontech/java-sql-extractor/parser/visitor.go:261 +0x165
github.com/actiontech/java-sql-extractor/parser.(*JavaVisitor).VisitStatement(0xc095c319f0, 0x7fe46ecf5460?)
        /universe/vendor/github.com/actiontech/java-sql-extractor/parser/visitor.go:267 +0xfd
github.com/actiontech/java-sql-extractor/parser.(*JavaVisitor).VisitBlockStatement(0xc095c319f0, 0x18?)
        /universe/vendor/github.com/actiontech/java-sql-extractor/parser/visitor.go:233 +0x225
github.com/actiontech/java-sql-extractor/parser.(*JavaVisitor).VisitBlock(0xc095c319f0, 0xc0978c0380)
        /universe/vendor/github.com/actiontech/java-sql-extractor/parser/visitor.go:219 +0xdf
github.com/actiontech/java-sql-extractor/parser.(*JavaVisitor).VisitStatement(0xc095c319f0, 0x39a7e90?)
        /universe/vendor/github.com/actiontech/java-sql-extractor/parser/visitor.go:261 +0x165
github.com/actiontech/java-sql-extractor/parser.(*JavaVisitor).VisitStatement(0xc095c319f0, 0x7fe46ecf5460?)
        /universe/vendor/github.com/actiontech/java-sql-extractor/parser/visitor.go:267 +0xfd
github.com/actiontech/java-sql-extractor/parser.(*JavaVisitor).VisitBlockStatement(0xc095c319f0, 0xc0a81e1d80?)
        /universe/vendor/github.com/actiontech/java-sql-extractor/parser/visitor.go:233 +0x225
github.com/actiontech/java-sql-extractor/parser.(*JavaVisitor).VisitBlock(0xc095c319f0, 0xc0978a6400)
        /universe/vendor/github.com/actiontech/java-sql-extractor/parser/visitor.go:219 +0xdf
github.com/actiontech/java-sql-extractor/parser.(*JavaVisitor).VisitMethodBody(0xc095c319f0, 0xc0978a6380)
        /universe/vendor/github.com/actiontech/java-sql-extractor/parser/visitor.go:206 +0xff
github.com/actiontech/java-sql-extractor/parser.(*JavaVisitor).VisitMethodDeclaration(0xc095c319f0, 0xc097897c80)
        /universe/vendor/github.com/actiontech/java-sql-extractor/parser/visitor.go:192 +0x194
github.com/actiontech/java-sql-extractor/parser.(*JavaVisitor).VisitMemberDeclaration(0xc095c319f0, 0x148f0aa?)
        /universe/vendor/github.com/actiontech/java-sql-extractor/parser/visitor.go:93 +0xa5
github.com/actiontech/java-sql-extractor/parser.(*JavaVisitor).VisitClassBodyDeclaration(0xc095c319f0, 0x0?)
        /universe/vendor/github.com/actiontech/java-sql-extractor/parser/visitor.go:75 +0x119
github.com/actiontech/java-sql-extractor/parser.(*JavaVisitor).VisitClassBody(0x1?, 0xc0a81e1f88?)
        /universe/vendor/github.com/actiontech/java-sql-extractor/parser/visitor.go:64 +0x6a
github.com/actiontech/java-sql-extractor/parser.(*JavaVisitor).VisitClassDeclaration(0xc095c319f0, 0xc095c6a780)
        /universe/vendor/github.com/actiontech/java-sql-extractor/parser/visitor.go:48 +0x185
github.com/actiontech/java-sql-extractor/parser.(*JavaVisitor).VisitTypeDeclaration(0xc095c319f0, 0x1d60120?)
        /universe/vendor/github.com/actiontech/java-sql-extractor/parser/visitor.go:31 +0x8f
github.com/actiontech/java-sql-extractor/parser.(*JavaVisitor).VisitCompilationUnit(0xc095c319f0, 0xc095c50080)
        /universe/vendor/github.com/actiontech/java-sql-extractor/parser/visitor.go:22 +0xa8
github.com/actiontech/java-sql-extractor/java_antlr.(*CompilationUnitContext).Accept(0xc095c11498?, {0x21b6438?, 0xc095c319f0})
        /universe/vendor/github.com/actiontech/java-sql-extractor/java_antlr/java_parser.go:1475 +0x8a
github.com/actiontech/java-sql-extractor/parser.GetSqlFromJavaFile({0xc077980310?, 0x0?})
        /universe/vendor/github.com/actiontech/java-sql-extractor/parser/parser.go:107 +0xa7
github.com/actiontech/sqle/sqle/api/controller/v1.getSqlsFromGit.func1({0xc077980310, 0x64}, {0x21bf550?, 0xc076f16680?}, {0x100?, 0xffffffffffffff9c?})
        /universe/sqle/api/controller/v1/sql_audit_record.go:505 +0x268
path/filepath.walk({0xc077980310, 0x64}, {0x21bf550, 0xc076f16680}, 0xc0a81e2c90)
        /usr/local/go/src/path/filepath/path.go:434 +0x123
path/filepath.walk({0xc0e6f7a190, 0x4d}, {0x21bf550, 0xc0ea801040}, 0xc0a81e2c90)
        /usr/local/go/src/path/filepath/path.go:458 +0x285
path/filepath.walk({0xc0e6f7a0a0, 0x45}, {0x21bf550, 0xc0ea800f70}, 0xc0a81e2c90)
        /usr/local/go/src/path/filepath/path.go:458 +0x285
path/filepath.walk({0xc0eb821880, 0x40}, {0x21bf550, 0xc0ea800ea0}, 0xc0a81e2c90)
        /usr/local/go/src/path/filepath/path.go:458 +0x285
path/filepath.walk({0xc0eb8217c0, 0x3c}, {0x21bf550, 0xc0ea800dd0}, 0xc0a81e2c90)
        /usr/local/go/src/path/filepath/path.go:458 +0x285
path/filepath.walk({0xc0eb821700, 0x38}, {0x21bf550, 0xc0ea800d00}, 0xc0a81e2c90)
        /usr/local/go/src/path/filepath/path.go:458 +0x285
path/filepath.walk({0xc0eb821640, 0x34}, {0x21bf550, 0xc0ea800c30}, 0xc0a81e2c90)
        /usr/local/go/src/path/filepath/path.go:458 +0x285
path/filepath.walk({0xc0b3890420, 0x2f}, {0x21bf550, 0xc0ea800b60}, 0xc0a81e2c90)
        /usr/local/go/src/path/filepath/path.go:458 +0x285
path/filepath.walk({0xc0b3890390, 0x2a}, {0x21bf550, 0xc0ea800a90}, 0xc0a81e2c90)
        /usr/local/go/src/path/filepath/path.go:458 +0x285
path/filepath.walk({0xc0b3890210, 0x26}, {0x21bf550, 0xc0ea800820}, 0xc0a81e2c90)
        /usr/local/go/src/path/filepath/path.go:458 +0x285
path/filepath.walk({0xc07722a7c8, 0x14}, {0x21bf550, 0xc0acdf9450}, 0xc0a81e2c90)
        /usr/local/go/src/path/filepath/path.go:458 +0x285
path/filepath.Walk({0xc07722a7c8, 0x14}, 0xc0a81e2c90)
        /usr/local/go/src/path/filepath/path.go:521 +0x6c
github.com/actiontech/sqle/sqle/api/controller/v1.getSqlsFromGit({0x21e9458, 0xc0777668c0})
        /universe/sqle/api/controller/v1/sql_audit_record.go:467 +0x485
github.com/actiontech/sqle/sqle/api/controller/v1.getSQLFromFile({0x21e9458, 0xc0777668c0})
        /universe/sqle/api/controller/v1/task.go:172 +0x34c
github.com/actiontech/sqle/sqle/api/controller/v1.CreateSQLAuditRecord({0x21e9458, 0xc0777668c0})
        /universe/sqle/api/controller/v1/sql_audit_record.go:123 +0x368
github.com/actiontech/sqle/sqle/api/middleware.ProjectMemberOpAllowed.func1.1({0x21e9458?, 0xc0777668c0})
        /universe/sqle/api/middleware/permission.go:156 +0x228
github.com/actiontech/dms/pkg/dms-common/api/accesstoken.CheckLatestAccessToken.func1.1({0x21e9458?, 0xc0777668c0})
        /universe/vendor/github.com/actiontech/dms/pkg/dms-common/api/accesstoken/access_token.go:31 +0x33a
github.com/actiontech/sqle/sqle/api/middleware.OperationLogRecord.func1.1({0x21e9458, 0xc0777668c0})
        /universe/sqle/api/middleware/operation_record_ee.go:111 +0xca
github.com/actiontech/dms/pkg/dms-common/i18nPkg.(*Bundle).EchoMiddlewareByCustomFunc.func1.1({0x21e9458, 0xc0777668c0})
        /universe/vendor/github.com/actiontech/dms/pkg/dms-common/i18nPkg/bundle.go:155 +0x342
github.com/actiontech/sqle/sqle/api/middleware.VerifyUserIsDisabled.func1.1({0x21e9458?, 0xc0777668c0})
        /universe/sqle/api/middleware/verify_user.go:26 +0x1ed
github.com/labstack/echo/v4/middleware.JWTWithConfig.func1.1({0x21e9458, 0xc0777668c0})
        /universe/vendor/github.com/labstack/echo/v4/middleware/jwt.go:238 +0x2b9
github.com/actiontech/sqle/sqle/api/middleware.JWTTokenAdapter.func1.1({0x21e9458, 0xc0777668c0})
        /universe/sqle/api/middleware/jwt.go:33 +0x2bc
github.com/labstack/echo/v4.(*Echo).add.func1({0x21e9458, 0xc0777668c0})
        /universe/vendor/github.com/labstack/echo/v4/echo.go:552 +0x51
github.com/labstack/echo/v4/middleware.LoggerWithConfig.func2.1({0x21e9458, 0xc0777668c0})
        /universe/vendor/github.com/labstack/echo/v4/middleware/logger.go:117 +0xe2
github.com/labstack/echo/v4.(*Echo).ServeHTTP(0xc000fb5440, {0x21b48e0?, 0xc000560700}, 0xc0759e3000)
        /universe/vendor/github.com/labstack/echo/v4/echo.go:662 +0x3d1
net/http.serverHandler.ServeHTTP({0x21ad450?}, {0x21b48e0, 0xc000560700}, 0xc0759e3000)
        /usr/local/go/src/net/http/server.go:2947 +0x30c
net/http.(*conn).serve(0xc077526640, {0x21b5fd8, 0xc000666fc0})
        /usr/local/go/src/net/http/server.go:1991 +0x607
created by net/http.(*Server).Serve
        /usr/local/go/src/net/http/server.go:3102 +0x4db
echo: http: panic serving 127.0.0.1:36776: runtime error: **invalid memory address or nil pointer dereference**

如何复现(To Reproduce)

问题原因

在此处发生了空指针引用问题
Image

解决方案

更新java文件sql提取器的依赖

变更影响面

受影响的模块或功能

git仓库审核

外部引用的潜在问题或风险

更新了github.com/actiontech/java-sql-extractor依赖版本
2b8c3c0894a191034cd98aa3f9d8d98412b23d5c

版本兼容性

兼容

测试建议

模拟触发报错的java文件和仓库找 @iwanghc 获取

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working publish-pre3
Projects
None yet
Development

No branches or pull requests

4 participants