glebarez / sqlite

The pure-Go SQLite driver for GORM
MIT License
615 stars 40 forks source link

Cause panic on arm9 #108

Open 305236917 opened 11 months ago

305236917 commented 11 months ago

Question:

  1. I had no problem running it on Cortex-A7, but I had problems running it on arm9
  2. The CGO version works on arm9

Code: package main

import ( "github.com/glebarez/sqlite" "gorm.io/gorm" )

type Product struct { gorm.Model Code string Price uint }

func main() { db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{}) if err != nil { panic("failed to connect database") } db.AutoMigrate(&Product{}) }

Build args: GOARCH=arm GOOS=linux GOARM=5 go build .

Panic: panic: runtime error: invalid memory address or nil pointer dereference [signal SIGSEGV: segmentation violation code=0x1 addr=0x2c pc=0x373ef4]

goroutine 1 [running]: modernc.org/sqlite/lib.Xsqlite3WhereBegin(0x2d025a0, 0xae5008b0, 0xad50b2b8, 0x0, 0xad50b0b8, 0xad507548, 0xad50b038, 0x0, 0x140) /Users/trevan/go/pkg/mod/modernc.org/sqlite@v1.23.1/lib/sqlite_linux_arm.go:106300 +0xd20 modernc.org/sqlite/lib.Xsqlite3Select(0x2d025a0, 0xae5008b0, 0xad50b038, 0xae500f00) /Users/trevan/go/pkg/mod/modernc.org/sqlite@v1.23.1/lib/sqlite_linux_arm.go:92009 +0x19fc modernc.org/sqlite/lib.yy_reduce(0x2d025a0, 0xae5009f0, 0x54, 0x1, {0xad50b466, 0x0}, 0xae5008b0) /Users/trevan/go/pkg/mod/modernc.org/sqlite@v1.23.1/lib/sqlite_linux_arm.go:111851 +0x10d4 modernc.org/sqlite/lib.Xsqlite3Parser(0x2d025a0, 0xae5009f0, 0x1, {0xad50b466, 0x0}) /Users/trevan/go/pkg/mod/modernc.org/sqlite@v1.23.1/lib/sqlite_linux_arm.go:113411 +0xb8 modernc.org/sqlite/lib.Xsqlite3RunParser(0x2d025a0, 0xae5008b0, 0xad50b438) /Users/trevan/go/pkg/mod/modernc.org/sqlite@v1.23.1/lib/sqlite_linux_arm.go:114134 +0x32c modernc.org/sqlite/lib.sqlite3Prepare(0x2d025a0, 0xad900018, 0xad50b438, 0xffffffff, 0x80, 0x0, 0xae500890, 0xae500894) /Users/trevan/go/pkg/mod/modernc.org/sqlite@v1.23.1/lib/sqlite_linux_arm.go:85921 +0x338 modernc.org/sqlite/lib.sqlite3LockAndPrepare(0x2d025a0, 0xad900018, 0xad50b438, 0xffffffff, 0x80, 0x0, 0xae500890, 0xae500894) /Users/trevan/go/pkg/mod/modernc.org/sqlite@v1.23.1/lib/sqlite_linux_arm.go:86004 +0x150 modernc.org/sqlite/lib.Xsqlite3_prepare_v2(...) /Users/trevan/go/pkg/mod/modernc.org/sqlite@v1.23.1/lib/sqlite_linux_arm.go:86071 modernc.org/sqlite/lib.Xsqlite3_exec(0x2d025a0, 0xad900018, 0xad50b438, 0x48747c, 0xae500858, 0x0) /Users/trevan/go/pkg/mod/modernc.org/sqlite@v1.23.1/lib/sqlite_linux_arm.go:80623 +0x218 modernc.org/sqlite/lib.Xsqlite3InitOne(0x2d025a0, 0xad900018, 0x0, 0xae500054, 0x0) /Users/trevan/go/pkg/mod/modernc.org/sqlite@v1.23.1/lib/sqlite_linux_arm.go:85545 +0x850 modernc.org/sqlite/lib.Xsqlite3Init(0x2d025a0, 0xad900018, 0xae500054) /Users/trevan/go/pkg/mod/modernc.org/sqlite@v1.23.1/lib/sqlite_linux_arm.go:85622 +0x70 modernc.org/sqlite/lib.Xsqlite3ReadSchema(0x2d025a0, 0xae500050) /Users/trevan/go/pkg/mod/modernc.org/sqlite@v1.23.1/lib/sqlite_linux_arm.go:85649 +0x50 modernc.org/sqlite/lib.Xsqlite3LocateTable(0x2d025a0, 0xae500050, 0x0, 0xad50b738, 0x0) /Users/trevan/go/pkg/mod/modernc.org/sqlite@v1.23.1/lib/sqlite_linux_arm.go:68135 +0xa8 modernc.org/sqlite/lib.Xsqlite3LocateTableItem(0x2d025a0, 0xae500050, 0x0, 0xad50b8c0) /Users/trevan/go/pkg/mod/modernc.org/sqlite@v1.23.1/lib/sqlite_linux_arm.go:68192 +0x60 modernc.org/sqlite/lib.selectExpander(0x2d025a0, 0xae500790, 0xad50b4b8) /Users/trevan/go/pkg/mod/modernc.org/sqlite@v1.23.1/lib/sqlite_linux_arm.go:90568 +0x330 modernc.org/sqlite/lib.Xsqlite3WalkSelect(0x2d025a0, 0xae500790, 0xad50b4b8) /Users/trevan/go/pkg/mod/modernc.org/sqlite@v1.23.1/lib/sqlite_linux_arm.go:54992 +0x70 modernc.org/sqlite/lib.sqlite3SelectExpand(0x2d025a0, 0xae500050, 0xad50b4b8) /Users/trevan/go/pkg/mod/modernc.org/sqlite@v1.23.1/lib/sqlite_linux_arm.go:90856 +0xf8 modernc.org/sqlite/lib.Xsqlite3SelectPrep(0x2d025a0, 0xae500050, 0xad50b4b8, 0x0) /Users/trevan/go/pkg/mod/modernc.org/sqlite@v1.23.1/lib/sqlite_linux_arm.go:90931 +0x50 modernc.org/sqlite/lib.Xsqlite3Select(0x2d025a0, 0xae500050, 0xad50b4b8, 0xae5006a0) /Users/trevan/go/pkg/mod/modernc.org/sqlite@v1.23.1/lib/sqlite_linux_arm.go:91558 +0x1d4 modernc.org/sqlite/lib.yy_reduce(0x2d025a0, 0xae500190, 0x54, 0x1, {0xadb00550, 0x0}, 0xae500050) /Users/trevan/go/pkg/mod/modernc.org/sqlite@v1.23.1/lib/sqlite_linux_arm.go:111851 +0x10d4 modernc.org/sqlite/lib.Xsqlite3Parser(0x2d025a0, 0xae500190, 0x1, {0xadb00550, 0x0}) /Users/trevan/go/pkg/mod/modernc.org/sqlite@v1.23.1/lib/sqlite_linux_arm.go:113411 +0xb8 modernc.org/sqlite/lib.Xsqlite3RunParser(0x2d025a0, 0xae500050, 0xadb00510) /Users/trevan/go/pkg/mod/modernc.org/sqlite@v1.23.1/lib/sqlite_linux_arm.go:114134 +0x32c modernc.org/sqlite/lib.sqlite3Prepare(0x2d025a0, 0xad900018, 0xadb00510, 0xffffffff, 0x80, 0x0, 0xae300060, 0xae300068) /Users/trevan/go/pkg/mod/modernc.org/sqlite@v1.23.1/lib/sqlite_linux_arm.go:85921 +0x338 modernc.org/sqlite/lib.sqlite3LockAndPrepare(0x2d025a0, 0xad900018, 0xadb00510, 0xffffffff, 0x80, 0x0, 0xae300060, 0xae300068) /Users/trevan/go/pkg/mod/modernc.org/sqlite@v1.23.1/lib/sqlite_linux_arm.go:86004 +0x150 modernc.org/sqlite/lib.Xsqlite3_prepare_v2(...) /Users/trevan/go/pkg/mod/modernc.org/sqlite@v1.23.1/lib/sqlite_linux_arm.go:86071 github.com/glebarez/go-sqlite.(conn).prepareV2(0x2c8fde0, 0x2c7591c) /Users/trevan/go/pkg/mod/github.com/glebarez/go-sqlite@v1.21.2/sqlite.go:1275 +0x17c github.com/glebarez/go-sqlite.(stmt).query(0x2d1c6b8, {0x4f24a0, 0x755d78}, {0x2d2c060, 0x1, 0x1}) /Users/trevan/go/pkg/mod/github.com/glebarez/go-sqlite@v1.21.2/sqlite.go:605 +0x134 github.com/glebarez/go-sqlite.(conn).query(0x2c8fde0, {0x4f24a0, 0x755d78}, {0x2c39500, 0x40}, {0x2d2c060, 0x1, 0x1}) /Users/trevan/go/pkg/mod/github.com/glebarez/go-sqlite@v1.21.2/sqlite.go:1519 +0x100 github.com/glebarez/go-sqlite.(conn).QueryContext(0x2c8fde0, {0x4f24a0, 0x755d78}, {0x2c39500, 0x40}, {0x2d2c060, 0x1, 0x1}) /Users/trevan/go/pkg/mod/github.com/glebarez/go-sqlite@v1.21.2/sqlite_go18.go:38 +0x54 database/sql.ctxDriverQuery({0x4f24a0, 0x755d78}, {0xae830d80, 0x2c8fde0}, {0x0, 0x0}, {0x2c39500, 0x40}, {0x2d2c060, 0x1, ...}) /usr/local/go/src/database/sql/ctxutil.go:48 +0x94 database/sql.(DB).queryDC.func1() /usr/local/go/src/database/sql/sql.go:1748 +0x178 database/sql.withLock({0x4f1fa8, 0x2d1a000}, 0x2c75b5c) /usr/local/go/src/database/sql/sql.go:3502 +0x84 database/sql.(DB).queryDC(0x2c76870, {0x4f24a0, 0x755d78}, {0x0, 0x0}, 0x2d1a000, 0x2d1c6b0, {0x2c39500, 0x40}, {0x2d1c678, ...}) /usr/local/go/src/database/sql/sql.go:1743 +0x174 database/sql.(DB).query(0x2c76870, {0x4f24a0, 0x755d78}, {0x2c39500, 0x40}, {0x2d1c678, 0x1, 0x1}, 0x1) /usr/local/go/src/database/sql/sql.go:1726 +0xe4 database/sql.(DB).QueryContext.func1(0x1) /usr/local/go/src/database/sql/sql.go:1704 +0x6c database/sql.(DB).retry(0x2c76870, 0x2c75c64) /usr/local/go/src/database/sql/sql.go:1538 +0x78 database/sql.(DB).QueryContext(0x2c76870, {0x4f24a0, 0x755d78}, {0x2c39500, 0x40}, {0x2d1c678, 0x1, 0x1}) /usr/local/go/src/database/sql/sql.go:1703 +0x9c database/sql.(DB).QueryRowContext(0x2c76870, {0x4f24a0, 0x755d78}, {0x2c39500, 0x40}, {0x2d1c678, 0x1, 0x1}) /usr/local/go/src/database/sql/sql.go:1804 +0x54 gorm.io/gorm/callbacks.RowQuery(0x2d1e9e0) /Users/trevan/go/pkg/mod/gorm.io/gorm@v1.25.5/callbacks/row.go:18 +0x208 gorm.io/gorm.(processor).Execute(0x2ce0b40, 0x2d1e9e0) /Users/trevan/go/pkg/mod/gorm.io/gorm@v1.25.5/callbacks.go:130 +0x3ec gorm.io/gorm.(DB).Row(0x2d1e9e0) /Users/trevan/go/pkg/mod/gorm.io/gorm@v1.25.5/finisher_api.go:502 +0x94 github.com/glebarez/sqlite.Migrator.HasTable.func1(0x2c6ab60) /Users/trevan/go/pkg/mod/github.com/glebarez/sqlite@v1.10.0/migrator.go:32 +0x94 gorm.io/gorm/migrator.Migrator.RunWithValue({{0x1, 0x2d1e9c0, {0x4f2980, 0x2d2c048}}}, {0x42e9e8, 0x2d02640}, 0x2c75e34) /Users/trevan/go/pkg/mod/gorm.io/gorm@v1.25.5/migrator/migrator.go:71 +0x144 github.com/glebarez/sqlite.Migrator.HasTable({{{0x1, 0x2d1e9c0, {0x4f2980, 0x2d2c048}}}}, {0x42e9e8, 0x2d02640}) /Users/trevan/go/pkg/mod/github.com/glebarez/sqlite@v1.10.0/migrator.go:31 +0x90 gorm.io/gorm/migrator.Migrator.AutoMigrate({{0x1, 0x2d1e5c0, {0x4f2980, 0x2cbdd88}}}, {0x2d1c350, 0x1, 0x1}) /Users/trevan/go/pkg/mod/gorm.io/gorm@v1.25.5/migrator/migrator.go:120 +0x198 gorm.io/gorm.(DB).AutoMigrate(0x2c8fd40, {0x2d1c350, 0x1, 0x1}) /Users/trevan/go/pkg/mod/gorm.io/gorm@v1.25.5/migrator.go:24 +0x48 main.main() /Users/trevan/Code/VSCode/demo/dnptime/main.go:28 +0x130

wang182 commented 8 months ago

The same issue, but on arm5,do you have a solution?

wang182 commented 8 months ago

@glebarez

305236917 commented 8 months ago

The same issue, but on arm5,do you have a solution?

Nope, I used the CGO version instead of it.