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

sql: fatal error: stack overflow #40930

Closed
maddyblue opened this issue Sep 19, 2019 · 1 comment · Fixed by #40937
Closed

sql: fatal error: stack overflow #40930

maddyblue opened this issue Sep 19, 2019 · 1 comment · Fixed by #40937
Assignees
Labels
C-bug Code not up to spec/doc, specs & docs deemed correct. Solution expected to change code/behavior. O-sqlsmith

Comments

@maddyblue
Copy link
Contributor

CREATE TABLE IF NOT EXISTS tab_orig AS
	SELECT
		g AS _string
	FROM
		generate_series(NULL, NULL) AS g;

WITH
	with_4189
		AS (
			SELECT
				tab_10102._string
			FROM
				tab_orig AS tab_10102,
				(SELECT NULL) AS tab_10103 (col_24444)
		)
SELECT
	NULL
FROM
	tab_orig, with_4189;
github.com/cockroachdb/cockroach/pkg/sql/opt/norm.(*Factory).ConstructInnerJoin(0xc000c17b50, 0x4810620, 0xc0017315d8, 0x480fa40, 0xc001731158, 0x71a6da0, 0x0, 0x0, 0xc001731850, 0xc001731158, ...)
	/home/mjibson/go/src/github.com/cockroachdb/cockroach/pkg/sql/opt/norm/factory.og.go:1565 +0x6a90 fp=0xc0240009d8 sp=0xc0240009d0 pc=0x1dd8200
github.com/cockroachdb/cockroach/pkg/sql/opt/norm.(*Factory).DynamicConstruct(0xc000c17b50, 0xc0015b005a, 0xc0015b9b40, 0x4, 0x4, 0x480fa40, 0xc001731158)
	/home/mjibson/go/src/github.com/cockroachdb/cockroach/pkg/sql/opt/norm/factory.og.go:16595 +0x459f fp=0xc024000b78 sp=0xc0240009d8 pc=0x1e4f20f
github.com/cockroachdb/cockroach/pkg/sql/opt/norm.(*Factory).ConstructProject(0xc000c17b50, 0x480fa40, 0xc001731818, 0xc001687040, 0x0, 0x1, 0x0, 0xc0017affc0, 0xc0015b9940, 0x0)
	/home/mjibson/go/src/github.com/cockroachdb/cockroach/pkg/sql/opt/norm/factory.og.go:1316 +0x2b67 fp=0xc024001088 sp=0xc024000b78 pc=0x1dcf687
github.com/cockroachdb/cockroach/pkg/sql/opt/norm.(*Factory).ConstructProject(0xc000c17b50, 0x480fa40, 0xc001731818, 0xc001687040, 0x0, 0x1, 0x0, 0xc0017affc0, 0xc0015b9800, 0x0)
	/home/mjibson/go/src/github.com/cockroachdb/cockroach/pkg/sql/opt/norm/factory.og.go:1315 +0x2bf1 fp=0xc024001598 sp=0xc024001088 pc=0x1dcf711
github.com/cockroachdb/cockroach/pkg/sql/opt/norm.(*Factory).ConstructProject(0xc000c17b50, 0x480fa40, 0xc001731818, 0xc001687040, 0x0, 0x1, 0x0, 0xc0017affc0, 0xc0015b96c0, 0x0)
	/home/mjibson/go/src/github.com/cockroachdb/cockroach/pkg/sql/opt/norm/factory.og.go:1315 +0x2bf1 fp=0xc024001aa8 sp=0xc024001598 pc=0x1dcf711
github.com/cockroachdb/cockroach/pkg/sql/opt/norm.(*Factory).ConstructProject(0xc000c17b50, 0x480fa40, 0xc001731818, 0xc001687040, 0x0, 0x1, 0x0, 0xc0017affc0, 0xc0015b9580, 0x0)
	/home/mjibson/go/src/github.com/cockroachdb/cockroach/pkg/sql/opt/norm/factory.og.go:1315 +0x2bf1 fp=0xc024001fb8 sp=0xc024001aa8 pc=0x1dcf711
github.com/cockroachdb/cockroach/pkg/sql/opt/norm.(*Factory).ConstructProject(0xc000c17b50, 0x480fa40, 0xc001731818, 0xc001687040, 0x0, 0x1, 0x0, 0xc0017affc0, 0xc0015b9440, 0x0)
	/home/mjibson/go/src/github.com/cockroachdb/cockroach/pkg/sql/opt/norm/factory.og.go:1315 +0x2bf1 fp=0xc0240024c8 sp=0xc024001fb8 pc=0x1dcf711
github.com/cockroachdb/cockroach/pkg/sql/opt/norm.(*Factory).ConstructProject(0xc000c17b50, 0x480fa40, 0xc001731818, 0xc001687040, 0x0, 0x1, 0x0, 0xc0017affc0, 0xc0015b9300, 0x0)
	/home/mjibson/go/src/github.com/cockroachdb/cockroach/pkg/sql/opt/norm/factory.og.go:1315 +0x2bf1 fp=0xc0240029d8 sp=0xc0240024c8 pc=0x1dcf711
github.com/cockroachdb/cockroach/pkg/sql/opt/norm.(*Factory).ConstructProject(0xc000c17b50, 0x480fa40, 0xc001731818, 0xc001687040, 0x0, 0x1, 0x0, 0xc0017affc0, 0xc0015b91c0, 0x0)
	/home/mjibson/go/src/github.com/cockroachdb/cockroach/pkg/sql/opt/norm/factory.og.go:1315 +0x2bf1 fp=0xc024002ee8 sp=0xc0240029d8 pc=0x1dcf711
github.com/cockroachdb/cockroach/pkg/sql/opt/norm.(*Factory).ConstructProject(0xc000c17b50, 0x480fa40, 0xc001731818, 0xc001687040, 0x0, 0x1, 0x0, 0xc0017affc0, 0xc0015b9080, 0x0)
	/home/mjibson/go/src/github.com/cockroachdb/cockroach/pkg/sql/opt/norm/factory.og.go:1315 +0x2bf1 fp=0xc0240033f8 sp=0xc024002ee8 pc=0x1dcf711
github.com/cockroachdb/cockroach/pkg/sql/opt/norm.(*Factory).ConstructProject(0xc000c17b50, 0x480fa40, 0xc001731818, 0xc001687040, 0x0, 0x1, 0x0, 0xc0017affc0, 0xc0015b8f40, 0x0)
	/home/mjibson/go/src/github.com/cockroachdb/cockroach/pkg/sql/opt/norm/factory.og.go:1315 +0x2bf1 fp=0xc024003908 sp=0xc0240033f8 pc=0x1dcf711
github.com/cockroachdb/cockroach/pkg/sql/opt/norm.(*Factory).ConstructProject(0xc000c17b50, 0x480fa40, 0xc001731818, 0xc001687040, 0x0, 0x1, 0x0, 0xc0017affc0, 0xc0015b8e00, 0x0)
	/home/mjibson/go/src/github.com/cockroachdb/cockroach/pkg/sql/opt/norm/factory.og.go:1315 +0x2bf1 fp=0xc024003e18 sp=0xc024003908 pc=0x1dcf711
github.com/cockroachdb/cockroach/pkg/sql/opt/norm.(*Factory).ConstructProject(0xc000c17b50, 0x480fa40, 0xc001731818, 0xc001687040, 0x0, 0x1, 0x0, 0xc0017affc0, 0xc0015b8cc0, 0x0)
	/home/mjibson/go/src/github.com/cockroachdb/cockroach/pkg/sql/opt/norm/factory.og.go:1315 +0x2bf1 fp=0xc024004328 sp=0xc024003e18 pc=0x1dcf711
github.com/cockroachdb/cockroach/pkg/sql/opt/norm.(*Factory).ConstructProject(0xc000c17b50, 0x480fa40, 0xc001731818, 0xc001687040, 0x0, 0x1, 0x0, 0xc0017affc0, 0xc0015b8b80, 0x0)
	/home/mjibson/go/src/github.com/cockroachdb/cockroach/pkg/sql/opt/norm/factory.og.go:1315 +0x2bf1 fp=0xc024004838 sp=0xc024004328 pc=0x1dcf711
github.com/cockroachdb/cockroach/pkg/sql/opt/norm.(*Factory).ConstructProject(0xc000c17b50, 0x480fa40, 0xc001731818, 0xc001687040, 0x0, 0x1, 0x0, 0xc0017affc0, 0xc0015b8a40, 0x0)
	/home/mjibson/go/src/github.com/cockroachdb/cockroach/pkg/sql/opt/norm/factory.og.go:1315 +0x2bf1 fp=0xc024004d48 sp=0xc024004838 pc=0x1dcf711
github.com/cockroachdb/cockroach/pkg/sql/opt/norm.(*Factory).ConstructProject(0xc000c17b50, 0x480fa40, 0xc001731818, 0xc001687040, 0x0, 0x1, 0x0, 0xc0017affc0, 0xc0015b8900, 0x0)
	/home/mjibson/go/src/github.com/cockroachdb/cockroach/pkg/sql/opt/norm/factory.og.go:1315 +0x2bf1 fp=0xc024005258 sp=0xc024004d48 pc=0x1dcf711
github.com/cockroachdb/cockroach/pkg/sql/opt/norm.(*Factory).ConstructProject(0xc000c17b50, 0x480fa40, 0xc001731818, 0xc001687040, 0x0, 0x1, 0x0, 0xc0017affc0, 0xc0015b87c0, 0x0)
	/home/mjibson/go/src/github.com/cockroachdb/cockroach/pkg/sql/opt/norm/factory.og.go:1315 +0x2bf1 fp=0xc024005768 sp=0xc024005258 pc=0x1dcf711
github.com/cockroachdb/cockroach/pkg/sql/opt/norm.(*Factory).ConstructProject(0xc000c17b50, 0x480fa40, 0xc001731818, 0xc001687040, 0x0, 0x1, 0x0, 0xc0017affc0, 0xc0015b8680, 0x0)
	/home/mjibson/go/src/github.com/cockroachdb/cockroach/pkg/sql/opt/norm/factory.og.go:1315 +0x2bf1 fp=0xc024005c78 sp=0xc024005768 pc=0x1dcf711
@maddyblue maddyblue added C-bug Code not up to spec/doc, specs & docs deemed correct. Solution expected to change code/behavior. O-sqlsmith labels Sep 19, 2019
@RaduBerinde RaduBerinde assigned justinj and unassigned rytaft and RaduBerinde Sep 20, 2019
@RaduBerinde
Copy link
Member

@justin this looks like a problem with WithScan. The rule that loops is PruneJoinRightCols. This is the $input expression:

inner-join (hash)
 ├── columns: "_string":6(int)
 ├── stats: [rows=1000000]
 ├── scan tab_orig
 │    └── stats: [rows=1000]
 ├── with-scan &1 (with_4189)
 │    ├── columns: "_string":6(int)
 │    ├── mapping:
 │    │    └──  tab_10102._string:1(int) => "_string":6(int)
 │    ├── stats: [rows=1000]
 │    └── prune: (1)  <--- !!
 └── filters (true)

WithScan advertises PruneCols=(1) but it only outputs column 6. The info is left over from With.

BTW we should add a check that the PruneCols are a subset of OutputCols in Relational.Verify().

justinj pushed a commit to justinj/cockroach that referenced this issue Sep 20, 2019
Fixes cockroachdb#40930.

This commit zeroes out the Rule field on the relational props copied
from the With node. Follow-up for post branching will be to correctly
prune the columns from the WithScan.

Release note (bug fix): Fixed a stack overflow that could occur via use
of WITH.

Release justification: Category 2: Low risk and important bugfix.
craig bot pushed a commit that referenced this issue Sep 20, 2019
40937: opt: don't report invalid PruneCols from WithScan r=justinj a=justinj

Fixes #40930.

This commit zeroes out the Rule field on the relational props copied
from the With node. Follow-up for post branching will be to correctly
prune the columns from the WithScan.

Release note (bug fix): Fixed a stack overflow that could occur via use
of WITH.

Release justification: Category 2: Low risk and important bugfix.

Co-authored-by: Justin Jaffray <justin@cockroachlabs.com>
@craig craig bot closed this as completed in 488f8c4 Sep 20, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C-bug Code not up to spec/doc, specs & docs deemed correct. Solution expected to change code/behavior. O-sqlsmith
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants