Skip to content

Terraform panics when trying to create A record set with empty record #96

Open
@invidian

Description

@invidian

Terraform Version

$ terraform version
Terraform v0.11.13
+ provider.dns v2.2.0

Affected Resource(s)

  • dns_a_record_set (tested, probably others too)

Terraform Configuration Files

resource "dns_a_record_set" "foo" {
  zone = "foo."
  name = "foo"
  addresses = [
    "",
  ]
  ttl = 300
}

Also:

resource "dns_a_record_set" "foo" {
  zone = "foo."
  name = "foo"
  addresses = [
    "foo",
  ]
  ttl = 300
}

Debug Output

Please provider a link to a GitHub Gist containing the complete debug output: https://www.terraform.io/docs/internals/debugging.html. Please do NOT paste the debug output in the issue; just paste a link to the Gist.

Panic Output

panic: runtime error: invalid memory address or nil pointer dereference
2019-09-17T13:23:05.586Z [DEBUG] plugin.terraform-provider-dns_v2.2.0_x4: [signal SIGSEGV: segmentation violation code=0x1 addr=0x18 pc=0xe484d9]
2019-09-17T13:23:05.586Z [DEBUG] plugin.terraform-provider-dns_v2.2.0_x4: 
2019-09-17T13:23:05.586Z [DEBUG] plugin.terraform-provider-dns_v2.2.0_x4: goroutine 72 [running]:
2019-09-17T13:23:05.586Z [DEBUG] plugin.terraform-provider-dns_v2.2.0_x4: github.com/terraform-providers/terraform-provider-dns/vendor/github.com/miekg/dns.(*Msg).Insert(0xc00013d9a8, 0xc00013d888, 0x1, 0x1)
2019-09-17T13:23:05.586Z [DEBUG] plugin.terraform-provider-dns_v2.2.0_x4: 	/opt/teamcity-agent/work/5d79fe75d4460a2f/src/github.com/terraform-providers/terraform-provider-dns/vendor/github.com/miekg/dns/update.go:71 +0x89
2019-09-17T13:23:05.586Z [DEBUG] plugin.terraform-provider-dns_v2.2.0_x4: github.com/terraform-providers/terraform-provider-dns/dns.resourceDnsARecordSetUpdate(0xc0001199d0, 0xf0cba0, 0xc0001065a0, 0x0, 0x0)
2019-09-17T13:23:05.586Z [DEBUG] plugin.terraform-provider-dns_v2.2.0_x4: 	/opt/teamcity-agent/work/5d79fe75d4460a2f/src/github.com/terraform-providers/terraform-provider-dns/dns/resource_dns_a_record_set.go:114 +0x783
2019-09-17T13:23:05.586Z [DEBUG] plugin.terraform-provider-dns_v2.2.0_x4: github.com/terraform-providers/terraform-provider-dns/dns.resourceDnsARecordSetCreate(0xc0001199d0, 0xf0cba0, 0xc0001065a0, 0xc0001199d0, 0x0)
2019-09-17T13:23:05.586Z [DEBUG] plugin.terraform-provider-dns_v2.2.0_x4: 	/opt/teamcity-agent/work/5d79fe75d4460a2f/src/github.com/terraform-providers/terraform-provider-dns/dns/resource_dns_a_record_set.go:54 +0x5b
2019-09-17T13:23:05.586Z [DEBUG] plugin.terraform-provider-dns_v2.2.0_x4: github.com/terraform-providers/terraform-provider-dns/vendor/github.com/hashicorp/terraform/helper/schema.(*Resource).Apply(0xc0000f0000, 0xc000401040, 0xc00043fdc0, 0xf0cba0, 0xc0001065a0, 0xc000404201, 0xc0004dfad0, 0x1)
2019-09-17T13:23:05.586Z [DEBUG] plugin.terraform-provider-dns_v2.2.0_x4: 	/opt/teamcity-agent/work/5d79fe75d4460a2f/src/github.com/terraform-providers/terraform-provider-dns/vendor/github.com/hashicorp/terraform/helper/schema/resource.go:286 +0x3b4
2019-09-17T13:23:05.586Z [DEBUG] plugin.terraform-provider-dns_v2.2.0_x4: github.com/terraform-providers/terraform-provider-dns/vendor/github.com/hashicorp/terraform/helper/schema.(*Provider).Apply(0xc0000f0580, 0xc000400ff0, 0xc000401040, 0xc00043fdc0, 0xc00047e120, 0xc00049f800, 0x18)
2019-09-17T13:23:05.586Z [DEBUG] plugin.terraform-provider-dns_v2.2.0_x4: 	/opt/teamcity-agent/work/5d79fe75d4460a2f/src/github.com/terraform-providers/terraform-provider-dns/vendor/github.com/hashicorp/terraform/helper/schema/provider.go:285 +0x18f
2019-09-17T13:23:05.586Z [DEBUG] plugin.terraform-provider-dns_v2.2.0_x4: github.com/terraform-providers/terraform-provider-dns/vendor/github.com/hashicorp/terraform/plugin.(*ResourceProviderServer).Apply(0xc00043f480, 0xc00043f8a0, 0xc0002ebee0, 0x0, 0x0)
2019-09-17T13:23:05.586Z [DEBUG] plugin.terraform-provider-dns_v2.2.0_x4: 	/opt/teamcity-agent/work/5d79fe75d4460a2f/src/github.com/terraform-providers/terraform-provider-dns/vendor/github.com/hashicorp/terraform/plugin/resource_provider.go:530 +0x57
2019-09-17T13:23:05.586Z [DEBUG] plugin.terraform-provider-dns_v2.2.0_x4: reflect.Value.call(0xc000404d80, 0xc00000f970, 0x13, 0x1101f01, 0x4, 0xc0004dff18, 0x3, 0x3, 0xc000243ec0, 0xc00043c028, ...)
2019-09-17T13:23:05.586Z [DEBUG] plugin.terraform-provider-dns_v2.2.0_x4: 	/opt/goenv/versions/1.12.6/src/reflect/value.go:447 +0x461
2019-09-17T13:23:05.586Z [DEBUG] plugin.terraform-provider-dns_v2.2.0_x4: reflect.Value.Call(0xc000404d80, 0xc00000f970, 0x13, 0xc00046b718, 0x3, 0x3, 0xc00043c000, 0xc00046b710, 0xc00046b7b8)
2019-09-17T13:23:05.586Z [DEBUG] plugin.terraform-provider-dns_v2.2.0_x4: 	/opt/goenv/versions/1.12.6/src/reflect/value.go:308 +0xa4
2019-09-17T13:23:05.586Z [DEBUG] plugin.terraform-provider-dns_v2.2.0_x4: net/rpc.(*service).call(0xc000132800, 0xc000400fa0, 0xc0004bdd20, 0xc0004bdd30, 0xc0000f0600, 0xc00000da60, 0xf11120, 0xc00043f8a0, 0x16, 0xf11160, ...)
2019-09-17T13:23:05.586Z [DEBUG] plugin.terraform-provider-dns_v2.2.0_x4: 	/opt/goenv/versions/1.12.6/src/net/rpc/server.go:384 +0x14e
2019-09-17T13:23:05.586Z [DEBUG] plugin.terraform-provider-dns_v2.2.0_x4: created by net/rpc.(*Server).ServeCodec
2019-09-17T13:23:05.586Z [DEBUG] plugin.terraform-provider-dns_v2.2.0_x4: 	/opt/goenv/versions/1.12.6/src/net/rpc/server.go:481 +0x42b
2019/09/17 13:23:05 [TRACE] root: eval: *terraform.EvalWriteState
2019/09/17 13:23:05 [TRACE] root: eval: *terraform.EvalApplyProvisioners
2019/09/17 13:23:05 [TRACE] root: eval: *terraform.EvalIf
2019/09/17 13:23:05 [TRACE] root: eval: *terraform.EvalWriteState
2019/09/17 13:23:05 [TRACE] root: eval: *terraform.EvalWriteDiff
2019/09/17 13:23:05 [TRACE] root: eval: *terraform.EvalApplyPost
2019/09/17 13:23:05 [ERROR] root: eval: *terraform.EvalApplyPost, err: 1 error(s) occurred:

* dns_a_record_set.foo: unexpected EOF
2019/09/17 13:23:05 [ERROR] root: eval: *terraform.EvalSequence, err: 1 error(s) occurred:

* dns_a_record_set.foo: unexpected EOF
2019/09/17 13:23:05 [TRACE] [walkApply] Exiting eval tree: dns_a_record_set.foo
2019/09/17 13:23:05 [TRACE] dag/walk: upstream errored, not walking "provider.dns (close)"
2019/09/17 13:23:05 [TRACE] dag/walk: upstream errored, not walking "meta.count-boundary (count boundary fixup)"
2019/09/17 13:23:05 [TRACE] dag/walk: upstream errored, not walking "root"
2019/09/17 13:23:05 [TRACE] Preserving existing state lineage "c6ea7cd6-c201-dd09-5064-0ced8d84dd55"
2019-09-17T13:23:05.627Z [DEBUG] plugin: plugin process exited: path=/home/foo/.terraform/plugins/linux_amd64/terraform-provider-dns_v2.2.0_x4
2019/09/17 13:23:05 [TRACE] Preserving existing state lineage "c6ea7cd6-c201-dd09-5064-0ced8d84dd55"
2019/09/17 13:23:05 [TRACE] Preserving existing state lineage "c6ea7cd6-c201-dd09-5064-0ced8d84dd55"
2019/09/17 13:23:05 [TRACE] Preserving existing state lineage "c6ea7cd6-c201-dd09-5064-0ced8d84dd55"
2019/09/17 13:23:05 [DEBUG] plugin: waiting for all plugin processes to complete...
2019-09-17T13:23:05.773Z [WARN ] plugin: error closing client during Kill: err="connection is shut down"



!!!!!!!!!!!!!!!!!!!!!!!!!!! TERRAFORM CRASH !!!!!!!!!!!!!!!!!!!!!!!!!!!!

Terraform crashed! This is always indicative of a bug within Terraform.
A crash log has been placed at "crash.log" relative to your current
working directory. It would be immensely helpful if you could please
report the crash with Terraform[1] so that we can fix this.

When reporting bugs, please include your terraform version. That
information is available on the first line of crash.log. You can also
get it by running 'terraform --version' on the command line.

[1]: https://github.com/hashicorp/terraform/issues

!!!!!!!!!!!!!!!!!!!!!!!!!!! TERRAFORM CRASH !!!!!!!!!!!!!!!!!!!!!!!!!!!!

Expected Behavior

Provider should check for errors and handle misconfiguration gracefully

Actual Behavior

Provider crashes hard on bad configuration and does not check for errors given from upstream library.

Steps to Reproduce

  1. terraform apply

Important Factoids

Provider does not check for errors from dns library here: https://github.com/terraform-providers/terraform-provider-dns/blob/master/dns/resource_dns_a_record_set.go#L108 and here: https://github.com/terraform-providers/terraform-provider-dns/blob/master/dns/resource_dns_a_record_set.go#L113.

At least that should be done.

Ideally, those thing should be validated before even attempting to create such record.

References

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions