Skip to content

Crashing by Division Operators #7026

Description

@suyZhong

The following test case crashed go-mysql-server.

CREATE TABLE t0( c1 INT);
INSERT INTO t0(c1) VALUES (1);
SELECT * FROM t0 WHERE ((c1/-364240480)/(880447354))%1;

Here's my error trace:

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

goroutine 570 [running]:
github.com/dolthub/go-mysql-server/sql/expression.convertToDecimalValue({0x22bd280?, 0xc000014930?}, 0x80?)
        /home/suyang/go/pkg/mod/github.com/dolthub/go-mysql-server@v0.17.1-0.20231117210301-8d70c233f221/sql/expression/div.go:406 +0xcf
github.com/dolthub/go-mysql-server/sql/expression.(*Mod).convertLeftRight(0xc000d6aed0, 0xc0009a7d38?, {0x22bd280, 0xc000014930}, {0x22bd3c0, 0x437ca28})
        /home/suyang/go/pkg/mod/github.com/dolthub/go-mysql-server@v0.17.1-0.20231117210301-8d70c233f221/sql/expression/mod.go:150 +0x173
github.com/dolthub/go-mysql-server/sql/expression.(*Mod).Eval(0xc000bd7f00?, 0x0?, {0xc000df5d40?, 0xc000f7f820?, 0x1?})
        /home/suyang/go/pkg/mod/github.com/dolthub/go-mysql-server@v0.17.1-0.20231117210301-8d70c233f221/sql/expression/mod.go:119 +0x50
github.com/dolthub/go-mysql-server/sql.EvaluateCondition(0xc000bd7e00?, {0x304b6d0?, 0xc000d6aed0?}, {0xc000df5d40?, 0x0?, 0x0?})
        /home/suyang/go/pkg/mod/github.com/dolthub/go-mysql-server@v0.17.1-0.20231117210301-8d70c233f221/sql/core.go:256 +0x3e
github.com/dolthub/go-mysql-server/sql/plan.(*FilterIter).Next(0xc000f7f760, 0x0?)
        /home/suyang/go/pkg/mod/github.com/dolthub/go-mysql-server@v0.17.1-0.20231117210301-8d70c233f221/sql/plan/filter.go:119 +0x7d
github.com/dolthub/go-mysql-server/sql/rowexec.transactionCommittingIter.Next(...)
        /home/suyang/go/pkg/mod/github.com/dolthub/go-mysql-server@v0.17.1-0.20231117210301-8d70c233f221/sql/rowexec/transaction_iters.go:78
github.com/dolthub/go-mysql-server/sql/plan.(*trackedRowIter).Next(0xc000bd7e40, 0x0?)
        /home/suyang/go/pkg/mod/github.com/dolthub/go-mysql-server@v0.17.1-0.20231117210301-8d70c233f221/sql/plan/process.go:347 +0x24
github.com/dolthub/go-mysql-server/server.(*Handler).doQuery.func2()
        /home/suyang/go/pkg/mod/github.com/dolthub/go-mysql-server@v0.17.1-0.20231117210301-8d70c233f221/server/handler.go:286 +0x125
golang.org/x/sync/errgroup.(*Group).Go.func1()
        /home/suyang/go/pkg/mod/golang.org/x/sync@v0.3.0/errgroup/errgroup.go:75 +0x56
created by golang.org/x/sync/errgroup.(*Group).Go in goroutine 497
        /home/suyang/go/pkg/mod/golang.org/x/sync@v0.3.0/errgroup/errgroup.go:72 +0x96

I originally find this by building dolt from source cersion 4cffade. It could also be reproduced in 1.26.1.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions