Skip to content
This repository was archived by the owner on Mar 8, 2020. It is now read-only.

panic: slice bounds out of range in uast/transformer #61

Closed
bzz opened this issue Feb 22, 2019 · 5 comments
Closed

panic: slice bounds out of range in uast/transformer #61

bzz opened this issue Feb 22, 2019 · 5 comments
Assignees
Labels
Milestone

Comments

@bzz
Copy link
Contributor

bzz commented Feb 22, 2019

On parsing this not valid syntax using javascript-driver

empty-comment.js

// 
import * as React from "react";

a panic in transformer.(*commentElems).Split happens

panic: runtime error: slice bounds out of range

goroutine 12 [running]:
github.com/bblfsh/javascript-driver/vendor/gopkg.in/bblfsh/sdk.v2/uast/transformer.(*commentElems).Split(0xc420228728, 0x0, 0x0, 0xc420228728)
	/go/src/github.com/bblfsh/javascript-driver/vendor/gopkg.in/bblfsh/sdk.v2/uast/transformer/semantic.go:160 +0x8eb

Steps to reproduce

docker run --rm -it -p 9432:9432 bblfsh/javascript-driver:v2.6.0 --log-level=debug
bblfsh-cli empty-comment.js

Expected

Actual

couldn't parse empty-comment.js: rpc error: code = Unavailable desc = transport is closing

Full driver log in details

time="2019-02-21T21:24:00Z" level=info msg="server listening in /tmp/rpc.sock (unix)" id=01d48z36zpa0hgdhjcdcwg7qrg language=javascript
time="2019-02-21T21:24:01Z" level=info msg="new driver instance started bblfsh/javascript-driver:latest (01d48z36zpa0hgdhjcdcwg7qrg)"
panic: runtime error: slice bounds out of range

goroutine 12 [running]:
github.com/bblfsh/javascript-driver/vendor/gopkg.in/bblfsh/sdk.v2/uast/transformer.(*commentElems).Split(0xc420228728, 0x0, 0x0, 0xc420228728)
	/go/src/github.com/bblfsh/javascript-driver/vendor/gopkg.in/bblfsh/sdk.v2/uast/transformer/semantic.go:160 +0x8eb
github.com/bblfsh/javascript-driver/vendor/gopkg.in/bblfsh/sdk.v2/uast/transformer.(*commentUAST).Check(0xc4202a57a0, 0xc420296f20, 0xb744e0, 0xf030c0, 0xc42030cbc8, 0xffffffffffffff01, 0x0)
	/go/src/github.com/bblfsh/javascript-driver/vendor/gopkg.in/bblfsh/sdk.v2/uast/transformer/semantic.go:260 +0xd3
github.com/bblfsh/javascript-driver/vendor/gopkg.in/bblfsh/sdk.v2/uast/transformer.Fields.CheckObj(0xc420256480, 0x1, 0x1, 0xc420296f20, 0xc420256360, 0xed8d90, 0xc4202ee480, 0xc420228b58)
	/go/src/github.com/bblfsh/javascript-driver/vendor/gopkg.in/bblfsh/sdk.v2/uast/transformer/ops.go:809 +0x15f
github.com/bblfsh/javascript-driver/vendor/gopkg.in/bblfsh/sdk.v2/uast/transformer.Obj.CheckObj(0xc4202ea840, 0xc420296f20, 0xc420256360, 0x5, 0xc42030cbc8, 0x1)
	/go/src/github.com/bblfsh/javascript-driver/vendor/gopkg.in/bblfsh/sdk.v2/uast/transformer/ops.go:269 +0x61
github.com/bblfsh/javascript-driver/vendor/gopkg.in/bblfsh/sdk.v2/uast/transformer.(*opObjJoin).CheckObj(0xc4202eaff0, 0xc420296f20, 0xc4202509f0, 0x40c374, 0xaf701a, 0xc42028c810)
	/go/src/github.com/bblfsh/javascript-driver/vendor/gopkg.in/bblfsh/sdk.v2/uast/transformer/ops.go:575 +0x1cf
github.com/bblfsh/javascript-driver/vendor/gopkg.in/bblfsh/sdk.v2/uast/transformer.checkObj(0xb73a60, 0xc4202eaff0, 0xc420296f20, 0xb74480, 0xc4202509f0, 0x532456, 0xc4202ff7a0, 0xc4202be580)
	/go/src/github.com/bblfsh/javascript-driver/vendor/gopkg.in/bblfsh/sdk.v2/uast/transformer/ops.go:372 +0x5c
github.com/bblfsh/javascript-driver/vendor/gopkg.in/bblfsh/sdk.v2/uast/transformer.(*opObjJoin).Check(0xc4202eaff0, 0xc420296f20, 0xb74480, 0xc4202509f0, 0xc4202eb230, 0x200000000000001, 0xffffffffffffffff)
	/go/src/github.com/bblfsh/javascript-driver/vendor/gopkg.in/bblfsh/sdk.v2/uast/transformer/ops.go:554 +0x55
github.com/bblfsh/javascript-driver/vendor/gopkg.in/bblfsh/sdk.v2/uast/transformer.mappings.Do.func1(0xb74480, 0xc4202509f0, 0xc420229128, 0xb744e0, 0xf030c0)
	/go/src/github.com/bblfsh/javascript-driver/vendor/gopkg.in/bblfsh/sdk.v2/uast/transformer/transformer.go:326 +0x1d6
github.com/bblfsh/javascript-driver/vendor/gopkg.in/bblfsh/sdk.v2/uast/nodes.Apply(0xb74480, 0xc4202509f0, 0xc420229128, 0xc42025cef0, 0xc420251100, 0x0)
	/go/src/github.com/bblfsh/javascript-driver/vendor/gopkg.in/bblfsh/sdk.v2/uast/nodes/node.go:875 +0x234
github.com/bblfsh/javascript-driver/vendor/gopkg.in/bblfsh/sdk.v2/uast/nodes.Apply(0xb74300, 0xc420253860, 0xc420229128, 0xb744e0, 0xc42025cef0, 0x0)
	/go/src/github.com/bblfsh/javascript-driver/vendor/gopkg.in/bblfsh/sdk.v2/uast/nodes/node.go:863 +0x12e
github.com/bblfsh/javascript-driver/vendor/gopkg.in/bblfsh/sdk.v2/uast/nodes.Apply(0xb74480, 0xc4202517a0, 0xc420229128, 0xf02228, 0xad8dc0, 0xc42035c2d0)
	/go/src/github.com/bblfsh/javascript-driver/vendor/gopkg.in/bblfsh/sdk.v2/uast/nodes/node.go:848 +0x3a4
github.com/bblfsh/javascript-driver/vendor/gopkg.in/bblfsh/sdk.v2/uast/transformer.mappings.Do(0xee4220, 0xb, 0xb, 0xc42030ee40, 0xc42030f0e0, 0x0, 0x0, 0x0, 0xb74480, 0xc4202517a0, ...)
	/go/src/github.com/bblfsh/javascript-driver/vendor/gopkg.in/bblfsh/sdk.v2/uast/transformer/transformer.go:305 +0xeb
github.com/bblfsh/javascript-driver/vendor/gopkg.in/bblfsh/sdk.v2/driver.Transforms.do.func1(0xaf5616, 0x8, 0xc4202d5900, 0x1, 0x1, 0x0, 0x0)
	/go/src/github.com/bblfsh/javascript-driver/vendor/gopkg.in/bblfsh/sdk.v2/driver/transforms.go:99 +0x16b
github.com/bblfsh/javascript-driver/vendor/gopkg.in/bblfsh/sdk.v2/driver.Transforms.do(0xaf6bea, 0xa, 0xc4202a7f10, 0x1, 0x1, 0xecea70, 0x1, 0x1, 0xc4202d5900, 0x1, ...)
	/go/src/github.com/bblfsh/javascript-driver/vendor/gopkg.in/bblfsh/sdk.v2/driver/transforms.go:133 +0x4e3
github.com/bblfsh/javascript-driver/vendor/gopkg.in/bblfsh/sdk.v2/driver.Transforms.Do(0xaf6bea, 0xa, 0xc4202a7f10, 0x1, 0x1, 0xecea70, 0x1, 0x1, 0xc4202d5900, 0x1, ...)
	/go/src/github.com/bblfsh/javascript-driver/vendor/gopkg.in/bblfsh/sdk.v2/driver/transforms.go:89 +0x1c7
github.com/bblfsh/javascript-driver/vendor/gopkg.in/bblfsh/sdk.v2/driver.(*driverImpl).Parse(0xc42014ce60, 0xb718c0, 0xc42020dc50, 0xc4201df110, 0x23, 0xc4202145d0, 0x0, 0x0, 0x0, 0x0)
	/go/src/github.com/bblfsh/javascript-driver/vendor/gopkg.in/bblfsh/sdk.v2/driver/impl.go:69 +0x268
github.com/bblfsh/javascript-driver/vendor/gopkg.in/bblfsh/sdk.v2/protocol.(*driverServer).Parse(0xc420320880, 0xb718c0, 0xc42020dc20, 0xc420348680, 0x0, 0x0, 0x0)
	/go/src/github.com/bblfsh/javascript-driver/vendor/gopkg.in/bblfsh/sdk.v2/protocol/driver.go:87 +0x1af
github.com/bblfsh/javascript-driver/vendor/gopkg.in/bblfsh/sdk.v2/protocol._Driver_Parse_Handler.func1(0xb718c0, 0xc42020dc20, 0xa8dc80, 0xc420348680, 0xb718c0, 0xc42020dc20, 0xb75f80, 0xc4203161e0)
	/go/src/github.com/bblfsh/javascript-driver/vendor/gopkg.in/bblfsh/sdk.v2/protocol/driver.pb.go:179 +0x86
github.com/bblfsh/javascript-driver/vendor/github.com/grpc-ecosystem/grpc-opentracing/go/otgrpc.OpenTracingServerInterceptor.func1(0xb718c0, 0xc42020da70, 0xa8dc80, 0xc420348680, 0xc42020bc80, 0xc42020bdc0, 0x0, 0x0, 0x0, 0x0)
	/go/src/github.com/bblfsh/javascript-driver/vendor/github.com/grpc-ecosystem/grpc-opentracing/go/otgrpc/server.go:57 +0x2ba
github.com/bblfsh/javascript-driver/vendor/gopkg.in/bblfsh/sdk.v2/protocol._Driver_Parse_Handler(0xa1b3e0, 0xc420320880, 0xb718c0, 0xc42020da70, 0xc42013c850, 0xc420315600, 0x0, 0x0, 0x1, 0x1)
	/go/src/github.com/bblfsh/javascript-driver/vendor/gopkg.in/bblfsh/sdk.v2/protocol/driver.pb.go:181 +0x167
github.com/bblfsh/javascript-driver/vendor/google.golang.org/grpc.(*Server).processUnaryRPC(0xc420140380, 0xb751a0, 0xc4200ae000, 0xc4202bc400, 0xc420394c30, 0xecff30, 0x0, 0x0, 0x0)
	/go/src/github.com/bblfsh/javascript-driver/vendor/google.golang.org/grpc/server.go:1011 +0x4fc
github.com/bblfsh/javascript-driver/vendor/google.golang.org/grpc.(*Server).handleStream(0xc420140380, 0xb751a0, 0xc4200ae000, 0xc4202bc400, 0x0)
	/go/src/github.com/bblfsh/javascript-driver/vendor/google.golang.org/grpc/server.go:1249 +0x1318
github.com/bblfsh/javascript-driver/vendor/google.golang.org/grpc.(*Server).serveStreams.func1.1(0xc4201264b0, 0xc420140380, 0xb751a0, 0xc4200ae000, 0xc4202bc400)
	/go/src/github.com/bblfsh/javascript-driver/vendor/google.golang.org/grpc/server.go:680 +0x9f
created by github.com/bblfsh/javascript-driver/vendor/google.golang.org/grpc.(*Server).serveStreams.func1
	/go/src/github.com/bblfsh/javascript-driver/vendor/google.golang.org/grpc/server.go:678 +0xa1
time="2019-02-21T21:24:01Z" level=error msg="request processed content 35 bytes error: rpc error: code = Unavailable desc = transport is closing" elapsed=1.2484346s filename=empty-comment.js language=javascript

</ details>

@dennwc dennwc self-assigned this Feb 22, 2019
@dennwc
Copy link
Member

dennwc commented Feb 22, 2019

Fixed in the latest SDK versions. Need to update the JS driver.

@dennwc dennwc assigned bzz and unassigned dennwc Feb 22, 2019
@bzz
Copy link
Contributor Author

bzz commented Feb 22, 2019

@dennwc would you be so kind to link in the PR that fixes this issue in SDK please?

@dennwc
Copy link
Member

dennwc commented Feb 22, 2019

Sure: bblfsh/sdk#354

@bzz
Copy link
Contributor Author

bzz commented Feb 25, 2019

Indeed, on the latest SDK 2.17.4

couldn't parse empty-comment.js: transform failed: received 2 errors:
	check: unused field(s) on node Identifier: leadingComments
	check: unused field(s) on node ImportDeclaration: leadingComments

Going to move this to JS driver repo from SDK, as both failures are triggered by tests on SDK update inside JS driver and going to be taken care of under #57

@bzz bzz transferred this issue from bblfsh/sdk Feb 25, 2019
@bzz bzz added the bug label Feb 25, 2019
@bzz bzz added this to the 2.7.0 release milestone Mar 5, 2019
@bzz
Copy link
Contributor Author

bzz commented Mar 5, 2019

Solved by #57

@bzz bzz closed this as completed Mar 5, 2019
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

No branches or pull requests

2 participants