Go 1.8 Template Execute Output Inconsistent


Update: This issue seems fixed in Go 1.8.1.

I found a bug in Go 1.8 template package (text/template & html/template), which output inconsistent HTML after ExecuteTemplate. Sometimes I get correct HTML output, and sometimes not. After I downgrade the Go version to 1.7.5, everything works fine without problem.

The tempaltes (total 4 files) I use:

theme/template/layout/layout.html

{{- define "layout" -}}
<!doctype html>
<html prefix="og: http://ogp.me/ns#">
<head>
  <meta charset="utf-8">
  <title>วัดป่าโพธิญาณ</title>
  <meta name="description" content="วัดป่าโพธิญาณ - สาขา 8 วัดหนองป่าพง">
  <meta name="keywords" content="วัดเขื่อน">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  {{template "metaog" .}}
</head>
<body>

{{block "content" .}}{{end}}

{{template "footer" .}}
</body>
</html>
{{- end -}}

theme/template/layout/includes/metaog.html

{{- define "metaog" -}}
  <meta property="og:title" content="วัดป่าโพธิญาณ">
  <meta property="og:type" content="website">
  <meta property="og:description" content="วัดป่าโพธิญาณ - สาขา 8 วัดหนองป่าพง">
  <meta property="og:image" content="{{.OgImage}}">
  <meta property="og:url" content="{{.OgUrl}}">
  <meta property="og:locale" content="{{.OgLocale}}">
  <meta property="og:locale:alternate" content="en_US">
  <meta property="og:locale:alternate" content="zh_TW">
{{- end -}}

theme/template/layout/includes/footer.html

{{- define "footer" -}}
<div>Powered by
  <a href="https://golang.org/">Go</a>
</div>
{{- end -}}

theme/template/index.html

{{- template "layout" .}}
{{define "content" -}}
<div>Hello World!</div>
<div>Template Inheritance in Go html/template</div>
{{- end -}}

The correct HTML output should be:

<!doctype html>
<html prefix="og: http://ogp.me/ns#">
<head>
  <meta charset="utf-8">
  <title>วัดป่าโพธิญาณ</title>
  <meta name="description" content="วัดป่าโพธิญาณ - สาขา 8 วัดหนองป่าพง">
  <meta name="keywords" content="วัดเขื่อน">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <meta property="og:title" content="วัดป่าโพธิญาณ">
  <meta property="og:type" content="website">
  <meta property="og:description" content="วัดป่าโพธิญาณ - สาขา 8 วัดหนองป่าพง">
  <meta property="og:image" content="https://upload.wikimedia.org/wikipedia/commons/d/df/Dharma_Wheel.svg">
  <meta property="og:url" content="https://siongui.github.io/watpah/">
  <meta property="og:locale" content="th_TH">
  <meta property="og:locale:alternate" content="en_US">
  <meta property="og:locale:alternate" content="zh_TW">
</head>
<body>

<div>Hello World!</div>
<div>Template Inheritance in Go html/template</div>

<div>Powered by
  <a href="https://golang.org/">Go</a>
</div>
</body>
</html>

Sometime I get the following output in Go 1.8 template package:

<!doctype html>
<html prefix="og: http://ogp.me/ns#">
<head>
  <meta charset="utf-8">
  <title>วัดป่าโพธิญาณ</title>
  <meta name="description" content="วัดป่าโพธิญาณ - สาขา 8 วัดหนองป่าพง">
  <meta name="keywords" content="วัดเขื่อน">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <meta property="og:title" content="วัดป่าโพธิญาณ">
  <meta property="og:type" content="website">
  <meta property="og:description" content="วัดป่าโพธิญาณ - สาขา 8 วัดหนองป่าพง">
  <meta property="og:image" content="https://upload.wikimedia.org/wikipedia/commons/d/df/Dharma_Wheel.svg">
  <meta property="og:url" content="https://siongui.github.io/watpah/">
  <meta property="og:locale" content="th_TH">
  <meta property="og:locale:alternate" content="en_US">
  <meta property="og:locale:alternate" content="zh_TW">
</head>
<body>



<div>Powered by
<a href="https://golang.org/">Go</a>
</div>
</body>
</html>

Interestingly, some one report that there is some problem with Go 1.8 sync/atomic package [2]. Not sure whether it's the same issue or not?


References:

[1]generate html from template · siongui/wat-pah-photiyan@a872d70 · GitHub
[2]