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

Windows driver isn't thread-safe #121

Closed
lowenna opened this issue Sep 11, 2018 · 0 comments
Closed

Windows driver isn't thread-safe #121

lowenna opened this issue Sep 11, 2018 · 0 comments

Comments

@lowenna
Copy link

lowenna commented Sep 11, 2018

(I have a fix, PR soon).

This was found while I was investigating moby/libnetwork#1950 (although granted that uses the original boltdb). However the issue is still in the latest maintained version here.

Here's a simple test program which simulates the issue - all it does is have a number of goroutines attempt to open a database simultaneously.

package main

import (
        "fmt"
        "os"
        "sync"

        bolt "github.com/etcd-io/bbolt"
)

func main() {
        const instances = 30
        var wg sync.WaitGroup
        for instance := 0; instance < instances; instance++ {
                wg.Add(1)
                go opener(instance, &wg)

        }
        wg.Wait()
        fmt.Println("Success :)")
}

func opener(instance int, wg *sync.WaitGroup) {
        defer wg.Done()
        db, err := bolt.Open(`c:\bolt\test.db`, 0600, nil)
        if err != nil {
                panic(fmt.Sprintf("instance %d failed to open: %s", instance, err))
                os.Exit(-1)
        }
        db.Close()
}

Now run it a few times - due it being a race condition, it may succeed, as it does the first time below. Note this is run with $env:GOTRACEBACK=2 set. The important part is at the top of the output: panic: instance 0 failed to open: open c:\bolt\test.db.lock: Access is denied, although occasionally you will see The process cannot access the file cause it is being used by another process

PS E:\go\src\github.com\etcd-io\bbolt\test> .\test.exe
Success :)
PS E:\go\src\github.com\etcd-io\bbolt\test> .\test.exe
2018/09/11 09:37:13 bolt.Close(): funlock error: The handle is invalid.
panic: instance 0 failed to open: open c:\bolt\test.db.lock: Access is denied.

goroutine 19 [running]:
panic(0x4ca040, 0xc0001a4000)
        C:/Go/src/runtime/panic.go:556 +0x2d9 fp=0xc000095f48 sp=0xc000095eb8 pc=0x42a129
main.opener(0x0, 0xc000058070)
        e:/go/src/github.com/etcd-io/bbolt/test/main.go:27 +0x1a3 fp=0xc000095fd0 sp=0xc000095f48 pc=0x4b61b3
runtime.goexit()
        C:/Go/src/runtime/asm_amd64.s:1333 +0x1 fp=0xc000095fd8 sp=0xc000095fd0 pc=0x452301
created by main.main
        e:/go/src/github.com/etcd-io/bbolt/test/main.go:16 +0x89

goroutine 1 [semacquire]:
runtime.gopark(0x4fab80, 0x5b39c0, 0x401911, 0x4)
        C:/Go/src/runtime/proc.go:302 +0x100 fp=0xc00007de50 sp=0xc00007de30 pc=0x42c260
runtime.goparkunlock(0x5b39c0, 0xc000051911, 0x4)
        C:/Go/src/runtime/proc.go:308 +0x5a fp=0xc00007de80 sp=0xc00007de50 pc=0x42c31a
runtime.semacquire1(0xc000058078, 0xc00007de00, 0x1)
        C:/Go/src/runtime/sema.go:144 +0x1ca fp=0xc00007dee8 sp=0xc00007de80 pc=0x4398ba
sync.runtime_Semacquire(0xc000058078)
        C:/Go/src/runtime/sema.go:56 +0x40 fp=0xc00007df10 sp=0xc00007dee8 pc=0x4394a0
sync.(*WaitGroup).Wait(0xc000058070)
        C:/Go/src/sync/waitgroup.go:130 +0x6b fp=0xc00007df38 sp=0xc00007df10 pc=0x461a9b
main.main()
        e:/go/src/github.com/etcd-io/bbolt/test/main.go:19 +0xa6 fp=0xc00007df98 sp=0xc00007df38 pc=0x4b5fb6
runtime.main()
        C:/Go/src/runtime/proc.go:201 +0x207 fp=0xc00007dfe0 sp=0xc00007df98 pc=0x42be97
runtime.goexit()
        C:/Go/src/runtime/asm_amd64.s:1333 +0x1 fp=0xc00007dfe8 sp=0xc00007dfe0 pc=0x452301

goroutine 2 [force gc (idle)]:
runtime.gopark(0x4fab80, 0x5abfd0, 0x1410, 0x1)
        C:/Go/src/runtime/proc.go:302 +0x100 fp=0xc000037f80 sp=0xc000037f60 pc=0x42c260
runtime.goparkunlock(0x5abfd0, 0x1410, 0x1)
        C:/Go/src/runtime/proc.go:308 +0x5a fp=0xc000037fb0 sp=0xc000037f80 pc=0x42c31a
runtime.forcegchelper()
        C:/Go/src/runtime/proc.go:251 +0xc1 fp=0xc000037fe0 sp=0xc000037fb0 pc=0x42c0c1
runtime.goexit()
        C:/Go/src/runtime/asm_amd64.s:1333 +0x1 fp=0xc000037fe8 sp=0xc000037fe0 pc=0x452301
created by runtime.init.4
        C:/Go/src/runtime/proc.go:240 +0x3c

goroutine 3 [GC sweep wait]:
runtime.gopark(0x4fab80, 0x5ac0c0, 0x41140c, 0x1)
        C:/Go/src/runtime/proc.go:302 +0x100 fp=0xc000039f80 sp=0xc000039f60 pc=0x42c260
runtime.goparkunlock(0x5ac0c0, 0x50140c, 0x1)
        C:/Go/src/runtime/proc.go:308 +0x5a fp=0xc000039fb0 sp=0xc000039f80 pc=0x42c31a
runtime.bgsweep(0xc000040000)
        C:/Go/src/runtime/mgcsweep.go:52 +0x9d fp=0xc000039fd8 sp=0xc000039fb0 pc=0x41e21d
runtime.goexit()
        C:/Go/src/runtime/asm_amd64.s:1333 +0x1 fp=0xc000039fe0 sp=0xc000039fd8 pc=0x452301
created by runtime.gcenable
        C:/Go/src/runtime/mgc.go:216 +0x5f

goroutine 18 [finalizer wait]:
runtime.gopark(0x4fab80, 0x5c65d0, 0x50140f, 0x1)
        C:/Go/src/runtime/proc.go:302 +0x100 fp=0xc00003bf28 sp=0xc00003bf08 pc=0x42c260
runtime.goparkunlock(0x5c65d0, 0x140f, 0x1)
        C:/Go/src/runtime/proc.go:308 +0x5a fp=0xc00003bf58 sp=0xc00003bf28 pc=0x42c31a
runtime.runfinq()
        C:/Go/src/runtime/mfinal.go:175 +0xa7 fp=0xc00003bfe0 sp=0xc00003bf58 pc=0x415a57
runtime.goexit()
        C:/Go/src/runtime/asm_amd64.s:1333 +0x1 fp=0xc00003bfe8 sp=0xc00003bfe0 pc=0x452301
created by runtime.createfing
        C:/Go/src/runtime/mfinal.go:156 +0x68

goroutine 20 [runnable, locked to thread]:
runtime.cgocall(0x453b00, 0xc000106648, 0x463e42)
        C:/Go/src/runtime/cgocall.go:128 +0x55 fp=0xc000097bf8 sp=0xc000097bc0 pc=0x403645
syscall.Syscall9(0x7ff8acea1d30, 0x7, 0xc000156030, 0xc0000000, 0x3, 0x0, 0x4, 0x80, 0x0, 0x0, ...)
        C:/Go/src/runtime/syscall_windows.go:198 +0x102 fp=0xc000097c28 sp=0xc000097bf8 pc=0x443712
syscall.CreateFile(0xc000156030, 0x3c0000000, 0x0, 0x8000000004, 0x0, 0xc000097d28, 0x43f486, 0x14)
        C:/Go/src/syscall/zsyscall_windows.go:295 +0xd8 fp=0xc000097cc0 sp=0xc000097c28 pc=0x465648
syscall.Open(0xc000110080, 0x14, 0x80040, 0x180, 0x5, 0x14, 0xc000110080)
        C:/Go/src/syscall/syscall_windows.go:289 +0x112 fp=0xc000097d28 sp=0xc000097cc0 pc=0x464b42
os.openFile(0xc000110080, 0x14, 0x40, 0x180, 0x1, 0xc000110080, 0xc00011008f)
        C:/Go/src/os/file_windows.go:97 +0xa3 fp=0xc000097d70 sp=0xc000097d28 pc=0x47b213
os.openFileNolog(0xc000110080, 0x14, 0x40, 0x180, 0x2, 0xc000110080, 0x14)
        C:/Go/src/os/file_windows.go:158 +0x141 fp=0xc000097dc8 sp=0xc000097d70 pc=0x47b8b1
os.OpenFile(0xc000110080, 0x14, 0x40, 0x180, 0x5, 0xc000110080, 0x14)
        C:/Go/src/os/file.go:284 +0x66 fp=0xc000097e10 sp=0xc000097dc8 pc=0x47aa56
github.com/etcd-io/bbolt.flock(0xc00010e1e0, 0x100000180, 0x0, 0x180, 0xc000152008)
        e:/go/src/github.com/etcd-io/bbolt/bolt_windows.go:55 +0x8d fp=0xc000097e88 sp=0xc000097e10 pc=0x4a4c3d
github.com/etcd-io/bbolt.Open(0x4f32de, 0xf, 0xc000000180, 0x5c6740, 0x0, 0x0, 0x0)
        e:/go/src/github.com/etcd-io/bbolt/db.go:200 +0x168 fp=0xc000097f48 sp=0xc000097e88 pc=0x4a8a78
main.opener(0x1, 0xc000058070)
        e:/go/src/github.com/etcd-io/bbolt/test/main.go:25 +0x7e fp=0xc000097fd0 sp=0xc000097f48 pc=0x4b608e
runtime.goexit()
        C:/Go/src/runtime/asm_amd64.s:1333 +0x1 fp=0xc000097fd8 sp=0xc000097fd0 pc=0x452301
created by main.main
        e:/go/src/github.com/etcd-io/bbolt/test/main.go:16 +0x89

goroutine 22 [runnable, locked to thread]:
runtime.cgocall(0x453b00, 0xc0001222c8, 0x463e42)
        C:/Go/src/runtime/cgocall.go:128 +0x55 fp=0xc000093bf8 sp=0xc000093bc0 pc=0x403645
syscall.Syscall9(0x7ff8acea1d30, 0x7, 0xc00013e030, 0xc0000000, 0x3, 0x0, 0x4, 0x80, 0x0, 0x0, ...)
        C:/Go/src/runtime/syscall_windows.go:198 +0x102 fp=0xc000093c28 sp=0xc000093bf8 pc=0x443712
syscall.CreateFile(0xc00013e030, 0x3c0000000, 0x0, 0x8000000004, 0x0, 0xc000093d28, 0x43f486, 0x14)
        C:/Go/src/syscall/zsyscall_windows.go:295 +0xd8 fp=0xc000093cc0 sp=0xc000093c28 pc=0x465648
syscall.Open(0xc0000f00a0, 0x14, 0x80040, 0x180, 0x5, 0x14, 0xc0000f00a0)
        C:/Go/src/syscall/syscall_windows.go:289 +0x112 fp=0xc000093d28 sp=0xc000093cc0 pc=0x464b42
os.openFile(0xc0000f00a0, 0x14, 0x40, 0x180, 0x1, 0xc0000f00a0, 0xc0000f00af)
        C:/Go/src/os/file_windows.go:97 +0xa3 fp=0xc000093d70 sp=0xc000093d28 pc=0x47b213
os.openFileNolog(0xc0000f00a0, 0x14, 0x40, 0x180, 0x2, 0xc0000f00a0, 0x14)
        C:/Go/src/os/file_windows.go:158 +0x141 fp=0xc000093dc8 sp=0xc000093d70 pc=0x47b8b1
os.OpenFile(0xc0000f00a0, 0x14, 0x40, 0x180, 0x5, 0xc0000f00a0, 0x14)
        C:/Go/src/os/file.go:284 +0x66 fp=0xc000093e10 sp=0xc000093dc8 pc=0x47aa56
github.com/etcd-io/bbolt.flock(0xc0000ac1e0, 0x100000180, 0x0, 0x180, 0xc00013a008)
        e:/go/src/github.com/etcd-io/bbolt/bolt_windows.go:55 +0x8d fp=0xc000093e88 sp=0xc000093e10 pc=0x4a4c3d
github.com/etcd-io/bbolt.Open(0x4f32de, 0xf, 0xc000000180, 0x5c6740, 0x0, 0x0, 0x0)
        e:/go/src/github.com/etcd-io/bbolt/db.go:200 +0x168 fp=0xc000093f48 sp=0xc000093e88 pc=0x4a8a78
main.opener(0x3, 0xc000058070)
        e:/go/src/github.com/etcd-io/bbolt/test/main.go:25 +0x7e fp=0xc000093fd0 sp=0xc000093f48 pc=0x4b608e
runtime.goexit()
        C:/Go/src/runtime/asm_amd64.s:1333 +0x1 fp=0xc000093fd8 sp=0xc000093fd0 pc=0x452301
created by main.main
        e:/go/src/github.com/etcd-io/bbolt/test/main.go:16 +0x89

goroutine 24 [runnable, locked to thread]:
runtime.cgocall(0x453b00, 0xc000122648, 0x463e42)
        C:/Go/src/runtime/cgocall.go:128 +0x55 fp=0xc0000a1bf8 sp=0xc0000a1bc0 pc=0x403645
syscall.Syscall9(0x7ff8acea1d30, 0x7, 0xc000166030, 0xc0000000, 0x3, 0x0, 0x4, 0x80, 0x0, 0x0, ...)
        C:/Go/src/runtime/syscall_windows.go:198 +0x102 fp=0xc0000a1c28 sp=0xc0000a1bf8 pc=0x443712
syscall.CreateFile(0xc000166030, 0x3c0000000, 0x0, 0x8000000004, 0x0, 0xc0000a1d28, 0x43f486, 0x14)
        C:/Go/src/syscall/zsyscall_windows.go:295 +0xd8 fp=0xc0000a1cc0 sp=0xc0000a1c28 pc=0x465648
syscall.Open(0xc00012c080, 0x14, 0x80040, 0x180, 0x5, 0x14, 0xc00012c080)
        C:/Go/src/syscall/syscall_windows.go:289 +0x112 fp=0xc0000a1d28 sp=0xc0000a1cc0 pc=0x464b42
os.openFile(0xc00012c080, 0x14, 0x40, 0x180, 0x1, 0xc00012c080, 0xc00012c08f)
        C:/Go/src/os/file_windows.go:97 +0xa3 fp=0xc0000a1d70 sp=0xc0000a1d28 pc=0x47b213
os.openFileNolog(0xc00012c080, 0x14, 0x40, 0x180, 0x2, 0xc00012c080, 0x14)
        C:/Go/src/os/file_windows.go:158 +0x141 fp=0xc0000a1dc8 sp=0xc0000a1d70 pc=0x47b8b1
os.OpenFile(0xc00012c080, 0x14, 0x40, 0x180, 0x5, 0xc00012c080, 0x14)
        C:/Go/src/os/file.go:284 +0x66 fp=0xc0000a1e10 sp=0xc0000a1dc8 pc=0x47aa56
github.com/etcd-io/bbolt.flock(0xc00012a1e0, 0x100000180, 0x0, 0x180, 0xc000162008)
        e:/go/src/github.com/etcd-io/bbolt/bolt_windows.go:55 +0x8d fp=0xc0000a1e88 sp=0xc0000a1e10 pc=0x4a4c3d
github.com/etcd-io/bbolt.Open(0x4f32de, 0xf, 0xc000000180, 0x5c6740, 0x0, 0x0, 0x0)
        e:/go/src/github.com/etcd-io/bbolt/db.go:200 +0x168 fp=0xc0000a1f48 sp=0xc0000a1e88 pc=0x4a8a78
main.opener(0x5, 0xc000058070)
        e:/go/src/github.com/etcd-io/bbolt/test/main.go:25 +0x7e fp=0xc0000a1fd0 sp=0xc0000a1f48 pc=0x4b608e
runtime.goexit()
        C:/Go/src/runtime/asm_amd64.s:1333 +0x1 fp=0xc0000a1fd8 sp=0xc0000a1fd0 pc=0x452301
created by main.main
        e:/go/src/github.com/etcd-io/bbolt/test/main.go:16 +0x89

goroutine 25 [runnable, locked to thread]:
runtime.cgocall(0x453b00, 0xc0001069c8, 0x463e42)
        C:/Go/src/runtime/cgocall.go:128 +0x55 fp=0xc00009bbf8 sp=0xc00009bbc0 pc=0x403645
syscall.Syscall9(0x7ff8acea1d30, 0x7, 0xc000156060, 0xc0000000, 0x3, 0x0, 0x4, 0x80, 0x0, 0x0, ...)
        C:/Go/src/runtime/syscall_windows.go:198 +0x102 fp=0xc00009bc28 sp=0xc00009bbf8 pc=0x443712
syscall.CreateFile(0xc000156060, 0x3c0000000, 0x0, 0x8000000004, 0x0, 0xc00009bd28, 0x43f486, 0x14)
        C:/Go/src/syscall/zsyscall_windows.go:295 +0xd8 fp=0xc00009bcc0 sp=0xc00009bc28 pc=0x465648
syscall.Open(0xc0001100a0, 0x14, 0x80040, 0x180, 0x5, 0x14, 0xc0001100a0)
        C:/Go/src/syscall/syscall_windows.go:289 +0x112 fp=0xc00009bd28 sp=0xc00009bcc0 pc=0x464b42
os.openFile(0xc0001100a0, 0x14, 0x40, 0x180, 0x1, 0xc0001100a0, 0xc0001100af)
        C:/Go/src/os/file_windows.go:97 +0xa3 fp=0xc00009bd70 sp=0xc00009bd28 pc=0x47b213
os.openFileNolog(0xc0001100a0, 0x14, 0x40, 0x180, 0x2, 0xc0001100a0, 0x14)
        C:/Go/src/os/file_windows.go:158 +0x141 fp=0xc00009bdc8 sp=0xc00009bd70 pc=0x47b8b1
os.OpenFile(0xc0001100a0, 0x14, 0x40, 0x180, 0x5, 0xc0001100a0, 0x14)
        C:/Go/src/os/file.go:284 +0x66 fp=0xc00009be10 sp=0xc00009bdc8 pc=0x47aa56
github.com/etcd-io/bbolt.flock(0xc00010e3c0, 0x100000180, 0x0, 0x180, 0xc000152010)
        e:/go/src/github.com/etcd-io/bbolt/bolt_windows.go:55 +0x8d fp=0xc00009be88 sp=0xc00009be10 pc=0x4a4c3d
github.com/etcd-io/bbolt.Open(0x4f32de, 0xf, 0xc000000180, 0x5c6740, 0x0, 0x0, 0x0)
        e:/go/src/github.com/etcd-io/bbolt/db.go:200 +0x168 fp=0xc00009bf48 sp=0xc00009be88 pc=0x4a8a78
main.opener(0x6, 0xc000058070)
        e:/go/src/github.com/etcd-io/bbolt/test/main.go:25 +0x7e fp=0xc00009bfd0 sp=0xc00009bf48 pc=0x4b608e
runtime.goexit()
        C:/Go/src/runtime/asm_amd64.s:1333 +0x1 fp=0xc00009bfd8 sp=0xc00009bfd0 pc=0x452301
created by main.main
        e:/go/src/github.com/etcd-io/bbolt/test/main.go:16 +0x89

goroutine 26 [sleep]:
runtime.gopark(0x4fab80, 0x5ad040, 0x1312, 0x2)
        C:/Go/src/runtime/proc.go:302 +0x100 fp=0xc00009dd98 sp=0xc00009dd78 pc=0x42c260
runtime.goparkunlock(0x5ad040, 0xc000121312, 0x2)
        C:/Go/src/runtime/proc.go:308 +0x5a fp=0xc00009ddc8 sp=0xc00009dd98 pc=0x42c31a
time.Sleep(0x2faf080)
        C:/Go/src/runtime/time.go:105 +0x164 fp=0xc00009de10 sp=0xc00009ddc8 pc=0x443b94
github.com/etcd-io/bbolt.flock(0xc00012a000, 0x100000180, 0x0, 0x180, 0xc000162000)
        e:/go/src/github.com/etcd-io/bbolt/bolt_windows.go:85 +0x127 fp=0xc00009de88 sp=0xc00009de10 pc=0x4a4cd7
github.com/etcd-io/bbolt.Open(0x4f32de, 0xf, 0xc000000180, 0x5c6740, 0x0, 0x0, 0x0)
        e:/go/src/github.com/etcd-io/bbolt/db.go:200 +0x168 fp=0xc00009df48 sp=0xc00009de88 pc=0x4a8a78
main.opener(0x7, 0xc000058070)
        e:/go/src/github.com/etcd-io/bbolt/test/main.go:25 +0x7e fp=0xc00009dfd0 sp=0xc00009df48 pc=0x4b608e
runtime.goexit()
        C:/Go/src/runtime/asm_amd64.s:1333 +0x1 fp=0xc00009dfd8 sp=0xc00009dfd0 pc=0x452301
created by main.main
        e:/go/src/github.com/etcd-io/bbolt/test/main.go:16 +0x89

goroutine 27 [runnable, locked to thread]:
runtime.cgocall(0x453b00, 0xc000114648, 0x463e42)
        C:/Go/src/runtime/cgocall.go:128 +0x55 fp=0xc0000a9bf8 sp=0xc0000a9bc0 pc=0x403645
syscall.Syscall9(0x7ff8acea1d30, 0x7, 0xc00015e030, 0xc0000000, 0x3, 0x0, 0x4, 0x80, 0x0, 0x0, ...)
        C:/Go/src/runtime/syscall_windows.go:198 +0x102 fp=0xc0000a9c28 sp=0xc0000a9bf8 pc=0x443712
syscall.CreateFile(0xc00015e030, 0x3c0000000, 0x0, 0x8000000004, 0x0, 0xc0000a9d28, 0x43f486, 0x14)
        C:/Go/src/syscall/zsyscall_windows.go:295 +0xd8 fp=0xc0000a9cc0 sp=0xc0000a9c28 pc=0x465648
syscall.Open(0xc00011e0a0, 0x14, 0x80040, 0x180, 0x5, 0x14, 0xc00011e0a0)
        C:/Go/src/syscall/syscall_windows.go:289 +0x112 fp=0xc0000a9d28 sp=0xc0000a9cc0 pc=0x464b42
os.openFile(0xc00011e0a0, 0x14, 0x40, 0x180, 0x1, 0xc00011e0a0, 0xc00011e0af)
        C:/Go/src/os/file_windows.go:97 +0xa3 fp=0xc0000a9d70 sp=0xc0000a9d28 pc=0x47b213
os.openFileNolog(0xc00011e0a0, 0x14, 0x40, 0x180, 0x2, 0xc00011e0a0, 0x14)
        C:/Go/src/os/file_windows.go:158 +0x141 fp=0xc0000a9dc8 sp=0xc0000a9d70 pc=0x47b8b1
os.OpenFile(0xc00011e0a0, 0x14, 0x40, 0x180, 0x5, 0xc00011e0a0, 0x14)
        C:/Go/src/os/file.go:284 +0x66 fp=0xc0000a9e10 sp=0xc0000a9dc8 pc=0x47aa56
github.com/etcd-io/bbolt.flock(0xc00011c1e0, 0x100000180, 0x0, 0x180, 0xc00015a008)
        e:/go/src/github.com/etcd-io/bbolt/bolt_windows.go:55 +0x8d fp=0xc0000a9e88 sp=0xc0000a9e10 pc=0x4a4c3d
github.com/etcd-io/bbolt.Open(0x4f32de, 0xf, 0xc000000180, 0x5c6740, 0x0, 0x0, 0x0)
        e:/go/src/github.com/etcd-io/bbolt/db.go:200 +0x168 fp=0xc0000a9f48 sp=0xc0000a9e88 pc=0x4a8a78
main.opener(0x8, 0xc000058070)
        e:/go/src/github.com/etcd-io/bbolt/test/main.go:25 +0x7e fp=0xc0000a9fd0 sp=0xc0000a9f48 pc=0x4b608e
runtime.goexit()
        C:/Go/src/runtime/asm_amd64.s:1333 +0x1 fp=0xc0000a9fd8 sp=0xc0000a9fd0 pc=0x452301
created by main.main
        e:/go/src/github.com/etcd-io/bbolt/test/main.go:16 +0x89

goroutine 28 [runnable, locked to thread]:
runtime.cgocall(0x453b00, 0xc0001302c8, 0x463e42)
        C:/Go/src/runtime/cgocall.go:128 +0x55 fp=0xc0000abbf8 sp=0xc0000abbc0 pc=0x403645
syscall.Syscall9(0x7ff8acea1d30, 0x7, 0xc00013e060, 0xc0000000, 0x3, 0x0, 0x4, 0x80, 0x0, 0x0, ...)
        C:/Go/src/runtime/syscall_windows.go:198 +0x102 fp=0xc0000abc28 sp=0xc0000abbf8 pc=0x443712
syscall.CreateFile(0xc00013e060, 0x3c0000000, 0x0, 0x8000000004, 0x0, 0xc0000abd28, 0x43f486, 0x14)
        C:/Go/src/syscall/zsyscall_windows.go:295 +0xd8 fp=0xc0000abcc0 sp=0xc0000abc28 pc=0x465648
syscall.Open(0xc0000f00c0, 0x14, 0x80040, 0x180, 0x5, 0x14, 0xc0000f00c0)
        C:/Go/src/syscall/syscall_windows.go:289 +0x112 fp=0xc0000abd28 sp=0xc0000abcc0 pc=0x464b42
os.openFile(0xc0000f00c0, 0x14, 0x40, 0x180, 0x1, 0xc0000f00c0, 0xc0000f00cf)
        C:/Go/src/os/file_windows.go:97 +0xa3 fp=0xc0000abd70 sp=0xc0000abd28 pc=0x47b213
os.openFileNolog(0xc0000f00c0, 0x14, 0x40, 0x180, 0x2, 0xc0000f00c0, 0x14)
        C:/Go/src/os/file_windows.go:158 +0x141 fp=0xc0000abdc8 sp=0xc0000abd70 pc=0x47b8b1
os.OpenFile(0xc0000f00c0, 0x14, 0x40, 0x180, 0x5, 0xc0000f00c0, 0x14)
        C:/Go/src/os/file.go:284 +0x66 fp=0xc0000abe10 sp=0xc0000abdc8 pc=0x47aa56
github.com/etcd-io/bbolt.flock(0xc0000ac3c0, 0x100000180, 0x0, 0x180, 0xc00013a010)
        e:/go/src/github.com/etcd-io/bbolt/bolt_windows.go:55 +0x8d fp=0xc0000abe88 sp=0xc0000abe10 pc=0x4a4c3d
github.com/etcd-io/bbolt.Open(0x4f32de, 0xf, 0xc000000180, 0x5c6740, 0x0, 0x0, 0x0)
        e:/go/src/github.com/etcd-io/bbolt/db.go:200 +0x168 fp=0xc0000abf48 sp=0xc0000abe88 pc=0x4a8a78
main.opener(0x9, 0xc000058070)
        e:/go/src/github.com/etcd-io/bbolt/test/main.go:25 +0x7e fp=0xc0000abfd0 sp=0xc0000abf48 pc=0x4b608e
runtime.goexit()
        C:/Go/src/runtime/asm_amd64.s:1333 +0x1 fp=0xc0000abfd8 sp=0xc0000abfd0 pc=0x452301
created by main.main
        e:/go/src/github.com/etcd-io/bbolt/test/main.go:16 +0x89

goroutine 29 [sleep]:
runtime.gopark(0x4fab80, 0x5acfc0, 0x1312, 0x2)
        C:/Go/src/runtime/proc.go:302 +0x100 fp=0xc0000a5d98 sp=0xc0000a5d78 pc=0x42c260
runtime.goparkunlock(0x5acfc0, 0xc000111312, 0x2)
        C:/Go/src/runtime/proc.go:308 +0x5a fp=0xc0000a5dc8 sp=0xc0000a5d98 pc=0x42c31a
time.Sleep(0x2faf080)
        C:/Go/src/runtime/time.go:105 +0x164 fp=0xc0000a5e10 sp=0xc0000a5dc8 pc=0x443b94
github.com/etcd-io/bbolt.flock(0xc00011c000, 0x100000180, 0x0, 0x180, 0xc00015a000)
        e:/go/src/github.com/etcd-io/bbolt/bolt_windows.go:85 +0x127 fp=0xc0000a5e88 sp=0xc0000a5e10 pc=0x4a4cd7
github.com/etcd-io/bbolt.Open(0x4f32de, 0xf, 0xc000000180, 0x5c6740, 0x0, 0x0, 0x0)
        e:/go/src/github.com/etcd-io/bbolt/db.go:200 +0x168 fp=0xc0000a5f48 sp=0xc0000a5e88 pc=0x4a8a78
main.opener(0xa, 0xc000058070)
        e:/go/src/github.com/etcd-io/bbolt/test/main.go:25 +0x7e fp=0xc0000a5fd0 sp=0xc0000a5f48 pc=0x4b608e
runtime.goexit()
        C:/Go/src/runtime/asm_amd64.s:1333 +0x1 fp=0xc0000a5fd8 sp=0xc0000a5fd0 pc=0x452301
created by main.main
        e:/go/src/github.com/etcd-io/bbolt/test/main.go:16 +0x89

goroutine 31 [runnable, locked to thread]:
runtime.cgocall(0x453b00, 0xc0000e09c8, 0x463e42)
        C:/Go/src/runtime/cgocall.go:128 +0x55 fp=0xc0000b5bf8 sp=0xc0000b5bc0 pc=0x403645
syscall.Syscall9(0x7ff8acea1d30, 0x7, 0xc000146060, 0xc0000000, 0x3, 0x0, 0x4, 0x80, 0x0, 0x0, ...)
        C:/Go/src/runtime/syscall_windows.go:198 +0x102 fp=0xc0000b5c28 sp=0xc0000b5bf8 pc=0x443712
syscall.CreateFile(0xc000146060, 0x3c0000000, 0x0, 0x8000000004, 0x0, 0xc0000b5d28, 0x43f486, 0x14)
        C:/Go/src/syscall/zsyscall_windows.go:295 +0xd8 fp=0xc0000b5cc0 sp=0xc0000b5c28 pc=0x465648
syscall.Open(0xc0000f40c0, 0x14, 0x80040, 0x180, 0x5, 0x14, 0xc0000f40c0)
        C:/Go/src/syscall/syscall_windows.go:289 +0x112 fp=0xc0000b5d28 sp=0xc0000b5cc0 pc=0x464b42
os.openFile(0xc0000f40c0, 0x14, 0x40, 0x180, 0x1, 0xc0000f40c0, 0xc0000f40cf)
        C:/Go/src/os/file_windows.go:97 +0xa3 fp=0xc0000b5d70 sp=0xc0000b5d28 pc=0x47b213
os.openFileNolog(0xc0000f40c0, 0x14, 0x40, 0x180, 0x2, 0xc0000f40c0, 0x14)
        C:/Go/src/os/file_windows.go:158 +0x141 fp=0xc0000b5dc8 sp=0xc0000b5d70 pc=0x47b8b1
os.OpenFile(0xc0000f40c0, 0x14, 0x40, 0x180, 0x5, 0xc0000f40c0, 0x14)
        C:/Go/src/os/file.go:284 +0x66 fp=0xc0000b5e10 sp=0xc0000b5dc8 pc=0x47aa56
github.com/etcd-io/bbolt.flock(0xc0000e83c0, 0x100000180, 0x0, 0x180, 0xc000142010)
        e:/go/src/github.com/etcd-io/bbolt/bolt_windows.go:55 +0x8d fp=0xc0000b5e88 sp=0xc0000b5e10 pc=0x4a4c3d
github.com/etcd-io/bbolt.Open(0x4f32de, 0xf, 0xc000000180, 0x5c6740, 0x0, 0x0, 0x0)
        e:/go/src/github.com/etcd-io/bbolt/db.go:200 +0x168 fp=0xc0000b5f48 sp=0xc0000b5e88 pc=0x4a8a78
main.opener(0xc, 0xc000058070)
        e:/go/src/github.com/etcd-io/bbolt/test/main.go:25 +0x7e fp=0xc0000b5fd0 sp=0xc0000b5f48 pc=0x4b608e
runtime.goexit()
        C:/Go/src/runtime/asm_amd64.s:1333 +0x1 fp=0xc0000b5fd8 sp=0xc0000b5fd0 pc=0x452301
created by main.main
        e:/go/src/github.com/etcd-io/bbolt/test/main.go:16 +0x89

goroutine 32 [runnable, locked to thread]:
runtime.cgocall(0x453b00, 0xc000042d48, 0x463e42)
        C:/Go/src/runtime/cgocall.go:128 +0x55 fp=0xc0000b7bf8 sp=0xc0000b7bc0 pc=0x403645
syscall.Syscall9(0x7ff8acea1d30, 0x7, 0xc00007e0f0, 0xc0000000, 0x3, 0x0, 0x4, 0x80, 0x0, 0x0, ...)
        C:/Go/src/runtime/syscall_windows.go:198 +0x102 fp=0xc0000b7c28 sp=0xc0000b7bf8 pc=0x443712
syscall.CreateFile(0xc00007e0f0, 0x3c0000000, 0x0, 0x8000000004, 0x0, 0xc0000b7d28, 0x43f486, 0x14)
        C:/Go/src/syscall/zsyscall_windows.go:295 +0xd8 fp=0xc0000b7cc0 sp=0xc0000b7c28 pc=0x465648
syscall.Open(0xc0000561a0, 0x14, 0x80040, 0x180, 0x5, 0x14, 0xc0000561a0)
        C:/Go/src/syscall/syscall_windows.go:289 +0x112 fp=0xc0000b7d28 sp=0xc0000b7cc0 pc=0x464b42
os.openFile(0xc0000561a0, 0x14, 0x40, 0x180, 0x1, 0xc0000561a0, 0xc0000561af)
        C:/Go/src/os/file_windows.go:97 +0xa3 fp=0xc0000b7d70 sp=0xc0000b7d28 pc=0x47b213
os.openFileNolog(0xc0000561a0, 0x14, 0x40, 0x180, 0x2, 0xc0000561a0, 0x14)
        C:/Go/src/os/file_windows.go:158 +0x141 fp=0xc0000b7dc8 sp=0xc0000b7d70 pc=0x47b8b1
os.OpenFile(0xc0000561a0, 0x14, 0x40, 0x180, 0x5, 0xc0000561a0, 0x14)
        C:/Go/src/os/file.go:284 +0x66 fp=0xc0000b7e10 sp=0xc0000b7dc8 pc=0x47aa56
github.com/etcd-io/bbolt.flock(0xc0000dc5a0, 0x100000180, 0x0, 0x180, 0xc000080030)
        e:/go/src/github.com/etcd-io/bbolt/bolt_windows.go:55 +0x8d fp=0xc0000b7e88 sp=0xc0000b7e10 pc=0x4a4c3d
github.com/etcd-io/bbolt.Open(0x4f32de, 0xf, 0xc000000180, 0x5c6740, 0x0, 0x0, 0x0)
        e:/go/src/github.com/etcd-io/bbolt/db.go:200 +0x168 fp=0xc0000b7f48 sp=0xc0000b7e88 pc=0x4a8a78
main.opener(0xd, 0xc000058070)
        e:/go/src/github.com/etcd-io/bbolt/test/main.go:25 +0x7e fp=0xc0000b7fd0 sp=0xc0000b7f48 pc=0x4b608e
runtime.goexit()
        C:/Go/src/runtime/asm_amd64.s:1333 +0x1 fp=0xc0000b7fd8 sp=0xc0000b7fd0 pc=0x452301
created by main.main
        e:/go/src/github.com/etcd-io/bbolt/test/main.go:16 +0x89

goroutine 33 [runnable, locked to thread]:
runtime.cgocall(0x453b00, 0xc000130648, 0x463e42)
        C:/Go/src/runtime/cgocall.go:128 +0x55 fp=0xc0000b1bf8 sp=0xc0000b1bc0 pc=0x403645
syscall.Syscall9(0x7ff8acea1d30, 0x7, 0xc00013e090, 0xc0000000, 0x3, 0x0, 0x4, 0x80, 0x0, 0x0, ...)
        C:/Go/src/runtime/syscall_windows.go:198 +0x102 fp=0xc0000b1c28 sp=0xc0000b1bf8 pc=0x443712
syscall.CreateFile(0xc00013e090, 0x3c0000000, 0x0, 0x8000000004, 0x0, 0xc0000b1d28, 0x43f486, 0x14)
        C:/Go/src/syscall/zsyscall_windows.go:295 +0xd8 fp=0xc0000b1cc0 sp=0xc0000b1c28 pc=0x465648
syscall.Open(0xc0000f00e0, 0x14, 0x80040, 0x180, 0x5, 0x14, 0xc0000f00e0)
        C:/Go/src/syscall/syscall_windows.go:289 +0x112 fp=0xc0000b1d28 sp=0xc0000b1cc0 pc=0x464b42
os.openFile(0xc0000f00e0, 0x14, 0x40, 0x180, 0x1, 0xc0000f00e0, 0xc0000f00ef)
        C:/Go/src/os/file_windows.go:97 +0xa3 fp=0xc0000b1d70 sp=0xc0000b1d28 pc=0x47b213
os.openFileNolog(0xc0000f00e0, 0x14, 0x40, 0x180, 0x2, 0xc0000f00e0, 0x14)
        C:/Go/src/os/file_windows.go:158 +0x141 fp=0xc0000b1dc8 sp=0xc0000b1d70 pc=0x47b8b1
os.OpenFile(0xc0000f00e0, 0x14, 0x40, 0x180, 0x5, 0xc0000f00e0, 0x14)
        C:/Go/src/os/file.go:284 +0x66 fp=0xc0000b1e10 sp=0xc0000b1dc8 pc=0x47aa56
github.com/etcd-io/bbolt.flock(0xc0000ac5a0, 0x100000180, 0x0, 0x180, 0xc00013a018)
        e:/go/src/github.com/etcd-io/bbolt/bolt_windows.go:55 +0x8d fp=0xc0000b1e88 sp=0xc0000b1e10 pc=0x4a4c3d
github.com/etcd-io/bbolt.Open(0x4f32de, 0xf, 0xc000000180, 0x5c6740, 0x0, 0x0, 0x0)
        e:/go/src/github.com/etcd-io/bbolt/db.go:200 +0x168 fp=0xc0000b1f48 sp=0xc0000b1e88 pc=0x4a8a78
main.opener(0xe, 0xc000058070)
        e:/go/src/github.com/etcd-io/bbolt/test/main.go:25 +0x7e fp=0xc0000b1fd0 sp=0xc0000b1f48 pc=0x4b608e
runtime.goexit()
        C:/Go/src/runtime/asm_amd64.s:1333 +0x1 fp=0xc0000b1fd8 sp=0xc0000b1fd0 pc=0x452301
created by main.main
        e:/go/src/github.com/etcd-io/bbolt/test/main.go:16 +0x89

goroutine 34 [runnable, locked to thread]:
runtime.cgocall(0x453b00, 0xc0000e0d48, 0x463e42)
        C:/Go/src/runtime/cgocall.go:128 +0x55 fp=0xc0000b3bf8 sp=0xc0000b3bc0 pc=0x403645
syscall.Syscall9(0x7ff8acea1d30, 0x7, 0xc000146090, 0xc0000000, 0x3, 0x0, 0x4, 0x80, 0x0, 0x0, ...)
        C:/Go/src/runtime/syscall_windows.go:198 +0x102 fp=0xc0000b3c28 sp=0xc0000b3bf8 pc=0x443712
syscall.CreateFile(0xc000146090, 0x3c0000000, 0x0, 0x8000000004, 0x0, 0xc0000b3d28, 0x43f486, 0x14)
        C:/Go/src/syscall/zsyscall_windows.go:295 +0xd8 fp=0xc0000b3cc0 sp=0xc0000b3c28 pc=0x465648
syscall.Open(0xc0000f40e0, 0x14, 0x80040, 0x180, 0x5, 0x14, 0xc0000f40e0)
        C:/Go/src/syscall/syscall_windows.go:289 +0x112 fp=0xc0000b3d28 sp=0xc0000b3cc0 pc=0x464b42
os.openFile(0xc0000f40e0, 0x14, 0x40, 0x180, 0x1, 0xc0000f40e0, 0xc0000f40ef)
        C:/Go/src/os/file_windows.go:97 +0xa3 fp=0xc0000b3d70 sp=0xc0000b3d28 pc=0x47b213
os.openFileNolog(0xc0000f40e0, 0x14, 0x40, 0x180, 0x2, 0xc0000f40e0, 0x14)
        C:/Go/src/os/file_windows.go:158 +0x141 fp=0xc0000b3dc8 sp=0xc0000b3d70 pc=0x47b8b1
os.OpenFile(0xc0000f40e0, 0x14, 0x40, 0x180, 0x5, 0xc0000f40e0, 0x14)
        C:/Go/src/os/file.go:284 +0x66 fp=0xc0000b3e10 sp=0xc0000b3dc8 pc=0x47aa56
github.com/etcd-io/bbolt.flock(0xc0000e85a0, 0x100000180, 0x0, 0x180, 0xc000142018)
        e:/go/src/github.com/etcd-io/bbolt/bolt_windows.go:55 +0x8d fp=0xc0000b3e88 sp=0xc0000b3e10 pc=0x4a4c3d
github.com/etcd-io/bbolt.Open(0x4f32de, 0xf, 0xc000000180, 0x5c6740, 0x0, 0x0, 0x0)
        e:/go/src/github.com/etcd-io/bbolt/db.go:200 +0x168 fp=0xc0000b3f48 sp=0xc0000b3e88 pc=0x4a8a78
main.opener(0xf, 0xc000058070)
        e:/go/src/github.com/etcd-io/bbolt/test/main.go:25 +0x7e fp=0xc0000b3fd0 sp=0xc0000b3f48 pc=0x4b608e
runtime.goexit()
        C:/Go/src/runtime/asm_amd64.s:1333 +0x1 fp=0xc0000b3fd8 sp=0xc0000b3fd0 pc=0x452301
created by main.main
        e:/go/src/github.com/etcd-io/bbolt/test/main.go:16 +0x89

goroutine 35 [sleep]:
runtime.gopark(0x4fab80, 0x5ace40, 0x1312, 0x2)
        C:/Go/src/runtime/proc.go:302 +0x100 fp=0xc0000bdd98 sp=0xc0000bdd78 pc=0x42c260
runtime.goparkunlock(0x5ace40, 0xc0000e1312, 0x2)
        C:/Go/src/runtime/proc.go:308 +0x5a fp=0xc0000bddc8 sp=0xc0000bdd98 pc=0x42c31a
time.Sleep(0x2faf080)
        C:/Go/src/runtime/time.go:105 +0x164 fp=0xc0000bde10 sp=0xc0000bddc8 pc=0x443b94
github.com/etcd-io/bbolt.flock(0xc0000e8000, 0x100000180, 0x0, 0x180, 0xc000142000)
        e:/go/src/github.com/etcd-io/bbolt/bolt_windows.go:85 +0x127 fp=0xc0000bde88 sp=0xc0000bde10 pc=0x4a4cd7
github.com/etcd-io/bbolt.Open(0x4f32de, 0xf, 0xc000000180, 0x5c6740, 0x0, 0x0, 0x0)
        e:/go/src/github.com/etcd-io/bbolt/db.go:200 +0x168 fp=0xc0000bdf48 sp=0xc0000bde88 pc=0x4a8a78
main.opener(0x10, 0xc000058070)
        e:/go/src/github.com/etcd-io/bbolt/test/main.go:25 +0x7e fp=0xc0000bdfd0 sp=0xc0000bdf48 pc=0x4b608e
runtime.goexit()
        C:/Go/src/runtime/asm_amd64.s:1333 +0x1 fp=0xc0000bdfd8 sp=0xc0000bdfd0 pc=0x452301
created by main.main
        e:/go/src/github.com/etcd-io/bbolt/test/main.go:16 +0x89

goroutine 36 [runnable, locked to thread]:
runtime.cgocall(0x453b00, 0xc0000ea648, 0x463e42)
        C:/Go/src/runtime/cgocall.go:128 +0x55 fp=0xc0000bfc80 sp=0xc0000bfc48 pc=0x403645
syscall.Syscall6(0x7ff8acea20b0, 0x5, 0x194, 0xc0001a8000, 0x1000, 0xc0000bfd7c, 0xc0000bfd80, 0x0, 0x0, 0x0, ...)
        C:/Go/src/runtime/syscall_windows.go:185 +0xfc fp=0xc0000bfcb0 sp=0xc0000bfc80 pc=0x4435bc
syscall.ReadFile(0x194, 0xc0001a8000, 0x1000, 0x1000, 0xc0000bfd7c, 0xc0000bfd80, 0x0, 0x70)
        C:/Go/src/syscall/zsyscall_windows.go:312 +0xd5 fp=0xc0000bfd38 sp=0xc0000bfcb0 pc=0x4657c5
internal/poll.(*FD).Pread(0xc00014c280, 0xc0001a8000, 0x1000, 0x1000, 0x0, 0x0, 0x0, 0x0)
        C:/Go/src/internal/poll/fd_windows.go:596 +0x1c9 fp=0xc0000bfdb8 sp=0xc0000bfd38 pc=0x4782d9
os.(*File).pread(0xc00014a008, 0xc0001a8000, 0x1000, 0x1000, 0x0, 0x194, 0xc0001a6000, 0x0)
        C:/Go/src/os/file_windows.go:216 +0x5f fp=0xc0000bfe08 sp=0xc0000bfdb8 pc=0x47be4f
os.(*File).ReadAt(0xc00014a008, 0xc0001a8000, 0x1000, 0x1000, 0x0, 0x0, 0x0, 0xc000047c80)
        C:/Go/src/os/file.go:126 +0x104 fp=0xc0000bfe88 sp=0xc0000bfe08 pc=0x479f74
github.com/etcd-io/bbolt.Open(0x4f32de, 0xf, 0xc000000180, 0x5c6740, 0x0, 0x0, 0x0)
        e:/go/src/github.com/etcd-io/bbolt/db.go:237 +0x5c8 fp=0xc0000bff48 sp=0xc0000bfe88 pc=0x4a8ed8
main.opener(0x11, 0xc000058070)
        e:/go/src/github.com/etcd-io/bbolt/test/main.go:25 +0x7e fp=0xc0000bffd0 sp=0xc0000bff48 pc=0x4b608e
runtime.goexit()
        C:/Go/src/runtime/asm_amd64.s:1333 +0x1 fp=0xc0000bffd8 sp=0xc0000bffd0 pc=0x452301
created by main.main
        e:/go/src/github.com/etcd-io/bbolt/test/main.go:16 +0x89

goroutine 37 [runnable, locked to thread]:
runtime.cgocall(0x453b00, 0xc0000097c8, 0x463e42)
        C:/Go/src/runtime/cgocall.go:128 +0x55 fp=0xc0000b9bf8 sp=0xc0000b9bc0 pc=0x403645
syscall.Syscall9(0x7ff8acea1d30, 0x7, 0xc00000c2d0, 0xc0000000, 0x3, 0x0, 0x4, 0x80, 0x0, 0x0, ...)
        C:/Go/src/runtime/syscall_windows.go:198 +0x102 fp=0xc0000b9c28 sp=0xc0000b9bf8 pc=0x443712
syscall.CreateFile(0xc00000c2d0, 0x3c0000000, 0x0, 0x8000000004, 0x0, 0xc0000b9d28, 0x43f486, 0x14)
        C:/Go/src/syscall/zsyscall_windows.go:295 +0xd8 fp=0xc0000b9cc0 sp=0xc0000b9c28 pc=0x465648
syscall.Open(0xc000010360, 0x14, 0x80040, 0x180, 0x5, 0x14, 0xc000010360)
        C:/Go/src/syscall/syscall_windows.go:289 +0x112 fp=0xc0000b9d28 sp=0xc0000b9cc0 pc=0x464b42
os.openFile(0xc000010360, 0x14, 0x40, 0x180, 0x1, 0xc000010360, 0xc00001036f)
        C:/Go/src/os/file_windows.go:97 +0xa3 fp=0xc0000b9d70 sp=0xc0000b9d28 pc=0x47b213
os.openFileNolog(0xc000010360, 0x14, 0x40, 0x180, 0x2, 0xc000010360, 0x14)
        C:/Go/src/os/file_windows.go:158 +0x141 fp=0xc0000b9dc8 sp=0xc0000b9d70 pc=0x47b8b1
os.OpenFile(0xc000010360, 0x14, 0x40, 0x180, 0x5, 0xc000010360, 0x14)
        C:/Go/src/os/file.go:284 +0x66 fp=0xc0000b9e10 sp=0xc0000b9dc8 pc=0x47aa56
github.com/etcd-io/bbolt.flock(0xc0000de3c0, 0x100000180, 0x0, 0x180, 0xc000006020)
        e:/go/src/github.com/etcd-io/bbolt/bolt_windows.go:55 +0x8d fp=0xc0000b9e88 sp=0xc0000b9e10 pc=0x4a4c3d
github.com/etcd-io/bbolt.Open(0x4f32de, 0xf, 0xc000000180, 0x5c6740, 0x0, 0x0, 0x0)
        e:/go/src/github.com/etcd-io/bbolt/db.go:200 +0x168 fp=0xc0000b9f48 sp=0xc0000b9e88 pc=0x4a8a78
main.opener(0x12, 0xc000058070)
        e:/go/src/github.com/etcd-io/bbolt/test/main.go:25 +0x7e fp=0xc0000b9fd0 sp=0xc0000b9f48 pc=0x4b608e
runtime.goexit()
        C:/Go/src/runtime/asm_amd64.s:1333 +0x1 fp=0xc0000b9fd8 sp=0xc0000b9fd0 pc=0x452301
created by main.main
        e:/go/src/github.com/etcd-io/bbolt/test/main.go:16 +0x89

goroutine 38 [runnable, locked to thread]:
runtime.cgocall(0x453b00, 0xc000009448, 0x463e42)
        C:/Go/src/runtime/cgocall.go:128 +0x55 fp=0xc0000bbbf8 sp=0xc0000bbbc0 pc=0x403645
syscall.Syscall9(0x7ff8acea1d30, 0x7, 0xc00000c2a0, 0xc0000000, 0x3, 0x0, 0x4, 0x80, 0x0, 0x0, ...)
        C:/Go/src/runtime/syscall_windows.go:198 +0x102 fp=0xc0000bbc28 sp=0xc0000bbbf8 pc=0x443712
syscall.CreateFile(0xc00000c2a0, 0x3c0000000, 0x0, 0x8000000004, 0x0, 0xc0000bbd28, 0x43f486, 0x14)
        C:/Go/src/syscall/zsyscall_windows.go:295 +0xd8 fp=0xc0000bbcc0 sp=0xc0000bbc28 pc=0x465648
syscall.Open(0xc000010340, 0x14, 0x80040, 0x180, 0x5, 0x14, 0xc000010340)
        C:/Go/src/syscall/syscall_windows.go:289 +0x112 fp=0xc0000bbd28 sp=0xc0000bbcc0 pc=0x464b42
os.openFile(0xc000010340, 0x14, 0x40, 0x180, 0x1, 0xc000010340, 0xc00001034f)
        C:/Go/src/os/file_windows.go:97 +0xa3 fp=0xc0000bbd70 sp=0xc0000bbd28 pc=0x47b213
os.openFileNolog(0xc000010340, 0x14, 0x40, 0x180, 0x2, 0xc000010340, 0x14)
        C:/Go/src/os/file_windows.go:158 +0x141 fp=0xc0000bbdc8 sp=0xc0000bbd70 pc=0x47b8b1
os.OpenFile(0xc000010340, 0x14, 0x40, 0x180, 0x5, 0xc000010340, 0x14)
        C:/Go/src/os/file.go:284 +0x66 fp=0xc0000bbe10 sp=0xc0000bbdc8 pc=0x47aa56
github.com/etcd-io/bbolt.flock(0xc0000de1e0, 0x100000180, 0x0, 0x180, 0xc000006018)
        e:/go/src/github.com/etcd-io/bbolt/bolt_windows.go:55 +0x8d fp=0xc0000bbe88 sp=0xc0000bbe10 pc=0x4a4c3d
github.com/etcd-io/bbolt.Open(0x4f32de, 0xf, 0xc000000180, 0x5c6740, 0x0, 0x0, 0x0)
        e:/go/src/github.com/etcd-io/bbolt/db.go:200 +0x168 fp=0xc0000bbf48 sp=0xc0000bbe88 pc=0x4a8a78
main.opener(0x13, 0xc000058070)
        e:/go/src/github.com/etcd-io/bbolt/test/main.go:25 +0x7e fp=0xc0000bbfd0 sp=0xc0000bbf48 pc=0x4b608e
runtime.goexit()
        C:/Go/src/runtime/asm_amd64.s:1333 +0x1 fp=0xc0000bbfd8 sp=0xc0000bbfd0 pc=0x452301
created by main.main
        e:/go/src/github.com/etcd-io/bbolt/test/main.go:16 +0x89

goroutine 39 [runnable, locked to thread]:
runtime.cgocall(0x453b00, 0xc0000ea9c8, 0x463e42)
        C:/Go/src/runtime/cgocall.go:128 +0x55 fp=0xc0000c7bf8 sp=0xc0000c7bc0 pc=0x403645
syscall.Syscall9(0x7ff8acea1d30, 0x7, 0xc00014e060, 0xc0000000, 0x3, 0x0, 0x4, 0x80, 0x0, 0x0, ...)
        C:/Go/src/runtime/syscall_windows.go:198 +0x102 fp=0xc0000c7c28 sp=0xc0000c7bf8 pc=0x443712
syscall.CreateFile(0xc00014e060, 0x3c0000000, 0x0, 0x8000000004, 0x0, 0xc0000c7d28, 0x43f486, 0x14)
        C:/Go/src/syscall/zsyscall_windows.go:295 +0xd8 fp=0xc0000c7cc0 sp=0xc0000c7c28 pc=0x465648
syscall.Open(0xc0001020c0, 0x14, 0x80040, 0x180, 0x5, 0x14, 0xc0001020c0)
        C:/Go/src/syscall/syscall_windows.go:289 +0x112 fp=0xc0000c7d28 sp=0xc0000c7cc0 pc=0x464b42
os.openFile(0xc0001020c0, 0x14, 0x40, 0x180, 0x1, 0xc0001020c0, 0xc0001020cf)
        C:/Go/src/os/file_windows.go:97 +0xa3 fp=0xc0000c7d70 sp=0xc0000c7d28 pc=0x47b213
os.openFileNolog(0xc0001020c0, 0x14, 0x40, 0x180, 0x2, 0xc0001020c0, 0x14)
        C:/Go/src/os/file_windows.go:158 +0x141 fp=0xc0000c7dc8 sp=0xc0000c7d70 pc=0x47b8b1
os.OpenFile(0xc0001020c0, 0x14, 0x40, 0x180, 0x5, 0xc0001020c0, 0x14)
        C:/Go/src/os/file.go:284 +0x66 fp=0xc0000c7e10 sp=0xc0000c7dc8 pc=0x47aa56
github.com/etcd-io/bbolt.flock(0xc0001003c0, 0x100000180, 0x0, 0x180, 0xc00014a010)
        e:/go/src/github.com/etcd-io/bbolt/bolt_windows.go:55 +0x8d fp=0xc0000c7e88 sp=0xc0000c7e10 pc=0x4a4c3d
github.com/etcd-io/bbolt.Open(0x4f32de, 0xf, 0xc000000180, 0x5c6740, 0x0, 0x0, 0x0)
        e:/go/src/github.com/etcd-io/bbolt/db.go:200 +0x168 fp=0xc0000c7f48 sp=0xc0000c7e88 pc=0x4a8a78
main.opener(0x14, 0xc000058070)
        e:/go/src/github.com/etcd-io/bbolt/test/main.go:25 +0x7e fp=0xc0000c7fd0 sp=0xc0000c7f48 pc=0x4b608e
runtime.goexit()
        C:/Go/src/runtime/asm_amd64.s:1333 +0x1 fp=0xc0000c7fd8 sp=0xc0000c7fd0 pc=0x452301
created by main.main
        e:/go/src/github.com/etcd-io/bbolt/test/main.go:16 +0x89

goroutine 40 [runnable, locked to thread]:
runtime.cgocall(0x453b00, 0xc0000ead48, 0x463e42)
        C:/Go/src/runtime/cgocall.go:128 +0x55 fp=0xc0000c9bf8 sp=0xc0000c9bc0 pc=0x403645
syscall.Syscall9(0x7ff8acea1d30, 0x7, 0xc00014e090, 0xc0000000, 0x3, 0x0, 0x4, 0x80, 0x0, 0x0, ...)
        C:/Go/src/runtime/syscall_windows.go:198 +0x102 fp=0xc0000c9c28 sp=0xc0000c9bf8 pc=0x443712
syscall.CreateFile(0xc00014e090, 0x3c0000000, 0x0, 0x8000000004, 0x0, 0xc0000c9d28, 0x43f486, 0x14)
        C:/Go/src/syscall/zsyscall_windows.go:295 +0xd8 fp=0xc0000c9cc0 sp=0xc0000c9c28 pc=0x465648
syscall.Open(0xc0001020e0, 0x14, 0x80040, 0x180, 0x5, 0x14, 0xc0001020e0)
        C:/Go/src/syscall/syscall_windows.go:289 +0x112 fp=0xc0000c9d28 sp=0xc0000c9cc0 pc=0x464b42
os.openFile(0xc0001020e0, 0x14, 0x40, 0x180, 0x1, 0xc0001020e0, 0xc0001020ef)
        C:/Go/src/os/file_windows.go:97 +0xa3 fp=0xc0000c9d70 sp=0xc0000c9d28 pc=0x47b213
os.openFileNolog(0xc0001020e0, 0x14, 0x40, 0x180, 0x2, 0xc0001020e0, 0x14)
        C:/Go/src/os/file_windows.go:158 +0x141 fp=0xc0000c9dc8 sp=0xc0000c9d70 pc=0x47b8b1
os.OpenFile(0xc0001020e0, 0x14, 0x40, 0x180, 0x5, 0xc0001020e0, 0x14)
        C:/Go/src/os/file.go:284 +0x66 fp=0xc0000c9e10 sp=0xc0000c9dc8 pc=0x47aa56
github.com/etcd-io/bbolt.flock(0xc0001005a0, 0x100000180, 0x0, 0x180, 0xc00014a018)
        e:/go/src/github.com/etcd-io/bbolt/bolt_windows.go:55 +0x8d fp=0xc0000c9e88 sp=0xc0000c9e10 pc=0x4a4c3d
github.com/etcd-io/bbolt.Open(0x4f32de, 0xf, 0xc000000180, 0x5c6740, 0x0, 0x0, 0x0)
        e:/go/src/github.com/etcd-io/bbolt/db.go:200 +0x168 fp=0xc0000c9f48 sp=0xc0000c9e88 pc=0x4a8a78
main.opener(0x15, 0xc000058070)
        e:/go/src/github.com/etcd-io/bbolt/test/main.go:25 +0x7e fp=0xc0000c9fd0 sp=0xc0000c9f48 pc=0x4b608e
runtime.goexit()
        C:/Go/src/runtime/asm_amd64.s:1333 +0x1 fp=0xc0000c9fd8 sp=0xc0000c9fd0 pc=0x452301
created by main.main
        e:/go/src/github.com/etcd-io/bbolt/test/main.go:16 +0x89

goroutine 42 [runnable, locked to thread]:
runtime.cgocall(0x453b00, 0xc000042648, 0x463e42)
        C:/Go/src/runtime/cgocall.go:128 +0x55 fp=0xc0000c5bf8 sp=0xc0000c5bc0 pc=0x403645
syscall.Syscall9(0x7ff8acea1d30, 0x7, 0xc00007e090, 0xc0000000, 0x3, 0x0, 0x4, 0x80, 0x0, 0x0, ...)
        C:/Go/src/runtime/syscall_windows.go:198 +0x102 fp=0xc0000c5c28 sp=0xc0000c5bf8 pc=0x443712
syscall.CreateFile(0xc00007e090, 0x3c0000000, 0x0, 0x8000000004, 0x0, 0xc0000c5d28, 0x43f486, 0x14)
        C:/Go/src/syscall/zsyscall_windows.go:295 +0xd8 fp=0xc0000c5cc0 sp=0xc0000c5c28 pc=0x465648
syscall.Open(0xc000056160, 0x14, 0x80040, 0x180, 0x5, 0x14, 0xc000056160)
        C:/Go/src/syscall/syscall_windows.go:289 +0x112 fp=0xc0000c5d28 sp=0xc0000c5cc0 pc=0x464b42
os.openFile(0xc000056160, 0x14, 0x40, 0x180, 0x1, 0xc000056160, 0xc00005616f)
        C:/Go/src/os/file_windows.go:97 +0xa3 fp=0xc0000c5d70 sp=0xc0000c5d28 pc=0x47b213
os.openFileNolog(0xc000056160, 0x14, 0x40, 0x180, 0x2, 0xc000056160, 0x14)
        C:/Go/src/os/file_windows.go:158 +0x141 fp=0xc0000c5dc8 sp=0xc0000c5d70 pc=0x47b8b1
os.OpenFile(0xc000056160, 0x14, 0x40, 0x180, 0x5, 0xc000056160, 0x14)
        C:/Go/src/os/file.go:284 +0x66 fp=0xc0000c5e10 sp=0xc0000c5dc8 pc=0x47aa56
github.com/etcd-io/bbolt.flock(0xc0000dc1e0, 0x100000180, 0x0, 0x180, 0xc000080020)
        e:/go/src/github.com/etcd-io/bbolt/bolt_windows.go:55 +0x8d fp=0xc0000c5e88 sp=0xc0000c5e10 pc=0x4a4c3d
github.com/etcd-io/bbolt.Open(0x4f32de, 0xf, 0xc000000180, 0x5c6740, 0x0, 0x0, 0x0)
        e:/go/src/github.com/etcd-io/bbolt/db.go:200 +0x168 fp=0xc0000c5f48 sp=0xc0000c5e88 pc=0x4a8a78
main.opener(0x17, 0xc000058070)
        e:/go/src/github.com/etcd-io/bbolt/test/main.go:25 +0x7e fp=0xc0000c5fd0 sp=0xc0000c5f48 pc=0x4b608e
runtime.goexit()
        C:/Go/src/runtime/asm_amd64.s:1333 +0x1 fp=0xc0000c5fd8 sp=0xc0000c5fd0 pc=0x452301
created by main.main
        e:/go/src/github.com/etcd-io/bbolt/test/main.go:16 +0x89

goroutine 43 [runnable, locked to thread]:
runtime.cgocall(0x453b00, 0xc000114d48, 0x463e42)
        C:/Go/src/runtime/cgocall.go:128 +0x55 fp=0xc0000cfbf8 sp=0xc0000cfbc0 pc=0x403645
syscall.Syscall9(0x7ff8acea1d30, 0x7, 0xc00015e090, 0xc0000000, 0x3, 0x0, 0x4, 0x80, 0x0, 0x0, ...)
        C:/Go/src/runtime/syscall_windows.go:198 +0x102 fp=0xc0000cfc28 sp=0xc0000cfbf8 pc=0x443712
syscall.CreateFile(0xc00015e090, 0x3c0000000, 0x0, 0x8000000004, 0x0, 0xc0000cfd28, 0x43f486, 0x14)
        C:/Go/src/syscall/zsyscall_windows.go:295 +0xd8 fp=0xc0000cfcc0 sp=0xc0000cfc28 pc=0x465648
syscall.Open(0xc00011e0e0, 0x14, 0x80040, 0x180, 0x5, 0x14, 0xc00011e0e0)
        C:/Go/src/syscall/syscall_windows.go:289 +0x112 fp=0xc0000cfd28 sp=0xc0000cfcc0 pc=0x464b42
os.openFile(0xc00011e0e0, 0x14, 0x40, 0x180, 0x1, 0xc00011e0e0, 0xc00011e0ef)
        C:/Go/src/os/file_windows.go:97 +0xa3 fp=0xc0000cfd70 sp=0xc0000cfd28 pc=0x47b213
os.openFileNolog(0xc00011e0e0, 0x14, 0x40, 0x180, 0x2, 0xc00011e0e0, 0x14)
        C:/Go/src/os/file_windows.go:158 +0x141 fp=0xc0000cfdc8 sp=0xc0000cfd70 pc=0x47b8b1
os.OpenFile(0xc00011e0e0, 0x14, 0x40, 0x180, 0x5, 0xc00011e0e0, 0x14)
        C:/Go/src/os/file.go:284 +0x66 fp=0xc0000cfe10 sp=0xc0000cfdc8 pc=0x47aa56
github.com/etcd-io/bbolt.flock(0xc00011c5a0, 0x100000180, 0x0, 0x180, 0xc00015a018)
        e:/go/src/github.com/etcd-io/bbolt/bolt_windows.go:55 +0x8d fp=0xc0000cfe88 sp=0xc0000cfe10 pc=0x4a4c3d
github.com/etcd-io/bbolt.Open(0x4f32de, 0xf, 0xc000000180, 0x5c6740, 0x0, 0x0, 0x0)
        e:/go/src/github.com/etcd-io/bbolt/db.go:200 +0x168 fp=0xc0000cff48 sp=0xc0000cfe88 pc=0x4a8a78
main.opener(0x18, 0xc000058070)
        e:/go/src/github.com/etcd-io/bbolt/test/main.go:25 +0x7e fp=0xc0000cffd0 sp=0xc0000cff48 pc=0x4b608e
runtime.goexit()
        C:/Go/src/runtime/asm_amd64.s:1333 +0x1 fp=0xc0000cffd8 sp=0xc0000cffd0 pc=0x452301
created by main.main
        e:/go/src/github.com/etcd-io/bbolt/test/main.go:16 +0x89

goroutine 44 [runnable, locked to thread]:
runtime.cgocall(0x453b00, 0xc000009b48, 0x463e42)
        C:/Go/src/runtime/cgocall.go:128 +0x55 fp=0xc0000d1bf8 sp=0xc0000d1bc0 pc=0x403645
syscall.Syscall9(0x7ff8acea1d30, 0x7, 0xc00000c300, 0xc0000000, 0x3, 0x0, 0x4, 0x80, 0x0, 0x0, ...)
        C:/Go/src/runtime/syscall_windows.go:198 +0x102 fp=0xc0000d1c28 sp=0xc0000d1bf8 pc=0x443712
syscall.CreateFile(0xc00000c300, 0x3c0000000, 0x0, 0x8000000004, 0x0, 0xc0000d1d28, 0x43f486, 0x14)
        C:/Go/src/syscall/zsyscall_windows.go:295 +0xd8 fp=0xc0000d1cc0 sp=0xc0000d1c28 pc=0x465648
syscall.Open(0xc000010380, 0x14, 0x80040, 0x180, 0x5, 0x14, 0xc000010380)
        C:/Go/src/syscall/syscall_windows.go:289 +0x112 fp=0xc0000d1d28 sp=0xc0000d1cc0 pc=0x464b42
os.openFile(0xc000010380, 0x14, 0x40, 0x180, 0x1, 0xc000010380, 0xc00001038f)
        C:/Go/src/os/file_windows.go:97 +0xa3 fp=0xc0000d1d70 sp=0xc0000d1d28 pc=0x47b213
os.openFileNolog(0xc000010380, 0x14, 0x40, 0x180, 0x2, 0xc000010380, 0x14)
        C:/Go/src/os/file_windows.go:158 +0x141 fp=0xc0000d1dc8 sp=0xc0000d1d70 pc=0x47b8b1
os.OpenFile(0xc000010380, 0x14, 0x40, 0x180, 0x5, 0xc000010380, 0x14)
        C:/Go/src/os/file.go:284 +0x66 fp=0xc0000d1e10 sp=0xc0000d1dc8 pc=0x47aa56
github.com/etcd-io/bbolt.flock(0xc0000de5a0, 0x100000180, 0x0, 0x180, 0xc000006028)
        e:/go/src/github.com/etcd-io/bbolt/bolt_windows.go:55 +0x8d fp=0xc0000d1e88 sp=0xc0000d1e10 pc=0x4a4c3d
github.com/etcd-io/bbolt.Open(0x4f32de, 0xf, 0xc000000180, 0x5c6740, 0x0, 0x0, 0x0)
        e:/go/src/github.com/etcd-io/bbolt/db.go:200 +0x168 fp=0xc0000d1f48 sp=0xc0000d1e88 pc=0x4a8a78
main.opener(0x19, 0xc000058070)
        e:/go/src/github.com/etcd-io/bbolt/test/main.go:25 +0x7e fp=0xc0000d1fd0 sp=0xc0000d1f48 pc=0x4b608e
runtime.goexit()
        C:/Go/src/runtime/asm_amd64.s:1333 +0x1 fp=0xc0000d1fd8 sp=0xc0000d1fd0 pc=0x452301
created by main.main
        e:/go/src/github.com/etcd-io/bbolt/test/main.go:16 +0x89

goroutine 45 [runnable, locked to thread]:
runtime.cgocall(0x453b00, 0xc0001149c8, 0x463e42)
        C:/Go/src/runtime/cgocall.go:128 +0x55 fp=0xc0000cbbf8 sp=0xc0000cbbc0 pc=0x403645
syscall.Syscall9(0x7ff8acea1d30, 0x7, 0xc00015e060, 0xc0000000, 0x3, 0x0, 0x4, 0x80, 0x0, 0x0, ...)
        C:/Go/src/runtime/syscall_windows.go:198 +0x102 fp=0xc0000cbc28 sp=0xc0000cbbf8 pc=0x443712
syscall.CreateFile(0xc00015e060, 0x3c0000000, 0x0, 0x8000000004, 0x0, 0xc0000cbd28, 0x43f486, 0x14)
        C:/Go/src/syscall/zsyscall_windows.go:295 +0xd8 fp=0xc0000cbcc0 sp=0xc0000cbc28 pc=0x465648
syscall.Open(0xc00011e0c0, 0x14, 0x80040, 0x180, 0x5, 0x14, 0xc00011e0c0)
        C:/Go/src/syscall/syscall_windows.go:289 +0x112 fp=0xc0000cbd28 sp=0xc0000cbcc0 pc=0x464b42
os.openFile(0xc00011e0c0, 0x14, 0x40, 0x180, 0x1, 0xc00011e0c0, 0xc00011e0cf)
        C:/Go/src/os/file_windows.go:97 +0xa3 fp=0xc0000cbd70 sp=0xc0000cbd28 pc=0x47b213
os.openFileNolog(0xc00011e0c0, 0x14, 0x40, 0x180, 0x2, 0xc00011e0c0, 0x14)
        C:/Go/src/os/file_windows.go:158 +0x141 fp=0xc0000cbdc8 sp=0xc0000cbd70 pc=0x47b8b1
os.OpenFile(0xc00011e0c0, 0x14, 0x40, 0x180, 0x5, 0xc00011e0c0, 0x14)
        C:/Go/src/os/file.go:284 +0x66 fp=0xc0000cbe10 sp=0xc0000cbdc8 pc=0x47aa56
github.com/etcd-io/bbolt.flock(0xc00011c3c0, 0x100000180, 0x0, 0x180, 0xc00015a010)
        e:/go/src/github.com/etcd-io/bbolt/bolt_windows.go:55 +0x8d fp=0xc0000cbe88 sp=0xc0000cbe10 pc=0x4a4c3d
github.com/etcd-io/bbolt.Open(0x4f32de, 0xf, 0xc000000180, 0x5c6740, 0x0, 0x0, 0x0)
        e:/go/src/github.com/etcd-io/bbolt/db.go:200 +0x168 fp=0xc0000cbf48 sp=0xc0000cbe88 pc=0x4a8a78
main.opener(0x1a, 0xc000058070)
        e:/go/src/github.com/etcd-io/bbolt/test/main.go:25 +0x7e fp=0xc0000cbfd0 sp=0xc0000cbf48 pc=0x4b608e
runtime.goexit()
        C:/Go/src/runtime/asm_amd64.s:1333 +0x1 fp=0xc0000cbfd8 sp=0xc0000cbfd0 pc=0x452301
created by main.main
        e:/go/src/github.com/etcd-io/bbolt/test/main.go:16 +0x89

goroutine 46 [runnable, locked to thread]:
runtime.cgocall(0x453b00, 0xc0000429c8, 0x463e42)
        C:/Go/src/runtime/cgocall.go:128 +0x55 fp=0xc0000cdbf8 sp=0xc0000cdbc0 pc=0x403645
syscall.Syscall9(0x7ff8acea1d30, 0x7, 0xc00007e0c0, 0xc0000000, 0x3, 0x0, 0x4, 0x80, 0x0, 0x0, ...)
        C:/Go/src/runtime/syscall_windows.go:198 +0x102 fp=0xc0000cdc28 sp=0xc0000cdbf8 pc=0x443712
syscall.CreateFile(0xc00007e0c0, 0x3c0000000, 0x0, 0x8000000004, 0x0, 0xc0000cdd28, 0x43f486, 0x14)
        C:/Go/src/syscall/zsyscall_windows.go:295 +0xd8 fp=0xc0000cdcc0 sp=0xc0000cdc28 pc=0x465648
syscall.Open(0xc000056180, 0x14, 0x80040, 0x180, 0x5, 0x14, 0xc000056180)
        C:/Go/src/syscall/syscall_windows.go:289 +0x112 fp=0xc0000cdd28 sp=0xc0000cdcc0 pc=0x464b42
os.openFile(0xc000056180, 0x14, 0x40, 0x180, 0x1, 0xc000056180, 0xc00005618f)
        C:/Go/src/os/file_windows.go:97 +0xa3 fp=0xc0000cdd70 sp=0xc0000cdd28 pc=0x47b213
os.openFileNolog(0xc000056180, 0x14, 0x40, 0x180, 0x2, 0xc000056180, 0x14)
        C:/Go/src/os/file_windows.go:158 +0x141 fp=0xc0000cddc8 sp=0xc0000cdd70 pc=0x47b8b1
os.OpenFile(0xc000056180, 0x14, 0x40, 0x180, 0x5, 0xc000056180, 0x14)
        C:/Go/src/os/file.go:284 +0x66 fp=0xc0000cde10 sp=0xc0000cddc8 pc=0x47aa56
github.com/etcd-io/bbolt.flock(0xc0000dc3c0, 0x100000180, 0x0, 0x180, 0xc000080028)
        e:/go/src/github.com/etcd-io/bbolt/bolt_windows.go:55 +0x8d fp=0xc0000cde88 sp=0xc0000cde10 pc=0x4a4c3d
github.com/etcd-io/bbolt.Open(0x4f32de, 0xf, 0xc000000180, 0x5c6740, 0x0, 0x0, 0x0)
        e:/go/src/github.com/etcd-io/bbolt/db.go:200 +0x168 fp=0xc0000cdf48 sp=0xc0000cde88 pc=0x4a8a78
main.opener(0x1b, 0xc000058070)
        e:/go/src/github.com/etcd-io/bbolt/test/main.go:25 +0x7e fp=0xc0000cdfd0 sp=0xc0000cdf48 pc=0x4b608e
runtime.goexit()
        C:/Go/src/runtime/asm_amd64.s:1333 +0x1 fp=0xc0000cdfd8 sp=0xc0000cdfd0 pc=0x452301
created by main.main
        e:/go/src/github.com/etcd-io/bbolt/test/main.go:16 +0x89

goroutine 47 [runnable, locked to thread]:
runtime.cgocall(0x453b00, 0xc0001229c8, 0x463e42)
        C:/Go/src/runtime/cgocall.go:128 +0x55 fp=0xc0000d9bf8 sp=0xc0000d9bc0 pc=0x403645
syscall.Syscall9(0x7ff8acea1d30, 0x7, 0xc000166060, 0xc0000000, 0x3, 0x0, 0x4, 0x80, 0x0, 0x0, ...)
        C:/Go/src/runtime/syscall_windows.go:198 +0x102 fp=0xc0000d9c28 sp=0xc0000d9bf8 pc=0x443712
syscall.CreateFile(0xc000166060, 0x3c0000000, 0x0, 0x8000000004, 0x0, 0xc0000d9d28, 0x43f486, 0x14)
        C:/Go/src/syscall/zsyscall_windows.go:295 +0xd8 fp=0xc0000d9cc0 sp=0xc0000d9c28 pc=0x465648
syscall.Open(0xc00012c0a0, 0x14, 0x80040, 0x180, 0x5, 0x14, 0xc00012c0a0)
        C:/Go/src/syscall/syscall_windows.go:289 +0x112 fp=0xc0000d9d28 sp=0xc0000d9cc0 pc=0x464b42
os.openFile(0xc00012c0a0, 0x14, 0x40, 0x180, 0x1, 0xc00012c0a0, 0xc00012c0af)
        C:/Go/src/os/file_windows.go:97 +0xa3 fp=0xc0000d9d70 sp=0xc0000d9d28 pc=0x47b213
os.openFileNolog(0xc00012c0a0, 0x14, 0x40, 0x180, 0x2, 0xc00012c0a0, 0x14)
        C:/Go/src/os/file_windows.go:158 +0x141 fp=0xc0000d9dc8 sp=0xc0000d9d70 pc=0x47b8b1
os.OpenFile(0xc00012c0a0, 0x14, 0x40, 0x180, 0x5, 0xc00012c0a0, 0x14)
        C:/Go/src/os/file.go:284 +0x66 fp=0xc0000d9e10 sp=0xc0000d9dc8 pc=0x47aa56
github.com/etcd-io/bbolt.flock(0xc00012a3c0, 0x100000180, 0x0, 0x180, 0xc000162010)
        e:/go/src/github.com/etcd-io/bbolt/bolt_windows.go:55 +0x8d fp=0xc0000d9e88 sp=0xc0000d9e10 pc=0x4a4c3d
github.com/etcd-io/bbolt.Open(0x4f32de, 0xf, 0xc000000180, 0x5c6740, 0x0, 0x0, 0x0)
        e:/go/src/github.com/etcd-io/bbolt/db.go:200 +0x168 fp=0xc0000d9f48 sp=0xc0000d9e88 pc=0x4a8a78
main.opener(0x1c, 0xc000058070)
        e:/go/src/github.com/etcd-io/bbolt/test/main.go:25 +0x7e fp=0xc0000d9fd0 sp=0xc0000d9f48 pc=0x4b608e
runtime.goexit()
        C:/Go/src/runtime/asm_amd64.s:1333 +0x1 fp=0xc0000d9fd8 sp=0xc0000d9fd0 pc=0x452301
created by main.main
        e:/go/src/github.com/etcd-io/bbolt/test/main.go:16 +0x89

goroutine 50 [runnable]:
runtime.notetsleepg(0x5ace60, 0x2ebfd28, 0x0)
        C:/Go/src/runtime/lock_sema.go:280 +0x52 fp=0xc0000d5f58 sp=0xc0000d5f18 pc=0x409a82
runtime.timerproc(0x5ace40)
        C:/Go/src/runtime/time.go:288 +0x31c fp=0xc0000d5fd8 sp=0xc0000d5f58 pc=0x44441c
runtime.goexit()
        C:/Go/src/runtime/asm_amd64.s:1333 +0x1 fp=0xc0000d5fe0 sp=0xc0000d5fd8 pc=0x452301
created by runtime.(*timersBucket).addtimerLocked
        C:/Go/src/runtime/time.go:170 +0x11b

goroutine 66 [runnable]:
runtime.notetsleepg(0x5ad060, 0x2eb54cc, 0x0)
        C:/Go/src/runtime/lock_sema.go:280 +0x52 fp=0xc00018df58 sp=0xc00018df18 pc=0x409a82
runtime.timerproc(0x5ad040)
        C:/Go/src/runtime/time.go:288 +0x31c fp=0xc00018dfd8 sp=0xc00018df58 pc=0x44441c
runtime.goexit()
        C:/Go/src/runtime/asm_amd64.s:1333 +0x1 fp=0xc00018dfe0 sp=0xc00018dfd8 pc=0x452301
created by runtime.(*timersBucket).addtimerLocked
        C:/Go/src/runtime/time.go:170 +0x11b

goroutine 82 [runnable]:
runtime.notetsleepg(0x5acfe0, 0x2faf080, 0x0)
        C:/Go/src/runtime/lock_sema.go:280 +0x52 fp=0xc000189f58 sp=0xc000189f18 pc=0x409a82
runtime.timerproc(0x5acfc0)
        C:/Go/src/runtime/time.go:288 +0x31c fp=0xc000189fd8 sp=0xc000189f58 pc=0x44441c
runtime.goexit()
        C:/Go/src/runtime/asm_amd64.s:1333 +0x1 fp=0xc000189fe0 sp=0xc000189fd8 pc=0x452301
created by runtime.(*timersBucket).addtimerLocked
        C:/Go/src/runtime/time.go:170 +0x11b
PS E:\go\src\github.com\etcd-io\bbolt\test>

The root cause of the issue is the way in which the database is locked, and there being a race condition between flock() and funlock() in bolt_windows.go. However, as I discovered, synchronising those two isn't quite sufficient to guarantee thread-safe access. There is a potentially better fix which removes the .lock file, being closer in implementation to the *NIX LOCK_EX/LOCK_SH. I'm validating it before submitting a PR.

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

No branches or pull requests

1 participant