alexbrainman / odbc

odbc driver written in go
BSD 3-Clause "New" or "Revised" License
352 stars 140 forks source link

Go 1.6 App failed with message "panic: runtime error: cgo argument has Go pointer to Go pointer" #66

Closed d2r2 closed 8 years ago

d2r2 commented 8 years ago

Application works good on Go 1.5, but after migrating to Go 1.6 start collapse with message "panic: runtime error: cgo argument has Go pointer to Go pointer".

Application is trying to run sql script on Microsoft SQL sever via unixODBC+freetds driver bundle.

It seems, issue arises in api.SQLBindCol method: panic(0xb76680, 0xc82021f0b0) /usr/lib/go/src/runtime/panic.go:426 +0x4e9 github.com/alexbrainman/odbc/api.SQLBindCol(0x7f553c07be70, 0x80001, 0xc82028edb8, 0x8, 0xc82028ed98, 0xc820191680) /home/ddyakov/Documents/gocode/src/github.com/alexbrainman/odbc/api/zapi_unix.go:28 +0x95

My notebook OS info: Linux arch_linux_home 4.4.5-1-ARCH #1 SMP PREEMPT Thu Mar 10 07:38:19 CET 2016 x86_64 GNU/Linux

Full stack dump: [GIN] 2016/04/04 - 14:45:35 | 500 | 3.59848508s | 127.0.0.1 | GET /queue_data5 2016-04-04T14:45:35.569 [ proxy] PANI runtime error: cgo argument has Go pointer to Go pointer panic: runtime error: cgo argument has Go pointer to Go pointer [recovered] panic: (*logrus.Entry) (0xc3aec0,0xc8202d2b80)

goroutine 31 [running]: panic(0xc3aec0, 0xc8202d2b80) /usr/lib/go/src/runtime/panic.go:464 +0x3e6 github.com/Sirupsen/logrus.Entry.log(0xc82006c600, 0xc820075170, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc53200, 0xc8202d2b40, ...) /home/ddyakov/Documents/gocode/src/github.com/Sirupsen/logrus/entry.go:113 +0x62c github.com/Sirupsen/logrus.(_Entry).Panic(0xc82006c640, 0xc8202830b0, 0x1, 0x1) /home/ddyakov/Documents/gocode/src/github.com/Sirupsen/logrus/entry.go:158 +0x99 bitbucket.org/d2r2/go_avaya_cc_reports/proxy.(_cache).startDataPrepare.func1.1() /home/ddyakov/Documents/gocode/src/bitbucket.org/d2r2/go_avaya_cc_reports/proxy/cache.go:92 +0x257 panic(0xb76680, 0xc82021f0b0) /usr/lib/go/src/runtime/panic.go:426 +0x4e9 github.com/alexbrainman/odbc/api.SQLBindCol(0x7f553c07be70, 0x80001, 0xc82028edb8, 0x8, 0xc82028ed98, 0xc820191680) /home/ddyakov/Documents/gocode/src/github.com/alexbrainman/odbc/api/zapi_unix.go:28 +0x95 github.com/alexbrainman/odbc.(_BufferLen).Bind(0xc82028ed98, 0x7f553c07be70, 0x0, 0xc820210008, 0xc82028edb8, 0x8, 0x8, 0xc820191680) /home/ddyakov/Documents/gocode/src/github.com/alexbrainman/odbc/column.go:32 +0x5d github.com/alexbrainman/odbc.(_BindableColumn).Bind(0xc82028ed80, 0x7f553c07be70, 0x0, 0xc82028ed80, 0x0, 0x0) /home/ddyakov/Documents/gocode/src/github.com/alexbrainman/odbc/column.go:218 +0x84 github.com/alexbrainman/odbc.(_ODBCStmt).BindColumns(0xc8201fecd0, 0x0, 0x0) /home/ddyakov/Documents/gocode/src/github.com/alexbrainman/odbc/odbcstmt.go:146 +0x3c9 github.com/alexbrainman/odbc.(_Stmt).Query(0xc820284570, 0xc8202845a0, 0x3, 0x3, 0x0, 0x0, 0x0, 0x0) /home/ddyakov/Documents/gocode/src/github.com/alexbrainman/odbc/stmt.go:95 +0x311 database/sql.rowsiFromStatement(0x7f5551dda158, 0xc8202610a0, 0x7f5551dda118, 0xc820284570, 0xc820284480, 0x3, 0x3, 0x0, 0x0, 0x0, ...) /usr/lib/go/src/database/sql/sql.go:1654 +0x3ba database/sql.(_DB).queryConn(0xc8202124d0, 0xc8202610a0, 0xc82021f050, 0xc82028ed00, 0x33, 0xc820284480, 0x3, 0x3, 0xc82021f030, 0x0, ...) /usr/lib/go/src/database/sql/sql.go:1118 +0x48b database/sql.(_DB).query(0xc8202124d0, 0xc82028ed00, 0x33, 0xc820284480, 0x3, 0x3, 0xc82028ed01, 0x33, 0x0, 0x0) /usr/lib/go/src/database/sql/sql.go:1078 +0x126 database/sql.(_DB).Query(0xc8202124d0, 0xc82028ed00, 0x33, 0xc820284480, 0x3, 0x3, 0x33, 0x0, 0x0) /usr/lib/go/src/database/sql/sql.go:1061 +0xa3 database/sql.(_DB).QueryRow(0xc8202124d0, 0xc82028ed00, 0x33, 0xc820284480, 0x3, 0x3, 0xc800000000) /usr/lib/go/src/database/sql/sql.go:1142 +0x63 github.com/d2r2/sqlg/sqlcore.(_StatementBatch).ExecQueryRow(0xc820234ca0, 0xc8202124d0, 0x1, 0x0, 0x0) /home/ddyakov/Documents/gocode/src/github.com/d2r2/sqlg/sqlcore/statement.go:198 +0x786 bitbucket.org/d2r2/go_avaya_cc_reports/db.(_DatabaseSpec).createDatabase(0xc820204900, 0x0, 0x0) /home/ddyakov/Documents/gocode/src/bitbucket.org/d2r2/go_avaya_cc_reports/db/db_spec.go:45 +0x36b bitbucket.org/d2r2/go_avaya_cc_reports/db.(*DatabaseSpec).OpenDatabaseWithCreateIfNeeded(0xc820204900, 0xc8201fe910, 0x0, 0x0) /home/ddyakov/Documents/gocode/src/bitbucket.org/d2r2/go_avaya_cc_reports/db/db_spec.go:89 +0x3a

alexbrainman commented 8 years ago

I think your issue is a duplicate of issue #65. Do you agree?

I will try and fix #65 when I have some free time. Hopefully this week.

Alex

d2r2 commented 8 years ago

Just discovered that #65 point to the same function SQLBindCol. Absolutely agree. Close my ticket. Thanks Alex. Denis