certificates: Badger failure on Windows Subsystem for Linux (fixed on Badger 2.0)

Subject of the issue

I got this bug while trying out step-ca on WSL: https://github.com/dgraph-io/badger/issues/722

Error opening database of Type badger with source /tmp/step/db: error opening Badger database: Unable to mmap RDWR log file: exec format error

According to the comment at the end, it was fixed when upgrading to badger 2. step-ca still currently uses 1.5.3.

Your environment

  • OS - Windows 10 with Ubuntu WSL

Steps to reproduce

Use Windows 10 WSL version 1909 OS build 18363.535, get ubuntu wsl. Get step-ca. And try running it after step ca init --ssh.

About this issue

  • Original URL
  • State: closed
  • Created 4 years ago
  • Reactions: 3
  • Comments: 23 (12 by maintainers)

Most upvoted comments

Here’s a link to a release built using badger2 -> https://github.com/smallstep/certificates/releases/tag/v0.14.0-rc.4.badger2

I’ll build an interim release that supports only badger2 and link it tomorrow.

Let me check “only badger 2.0 working” interim release is useful

Yeah, that was my initial idea too. If the method I described above isn’t working out then I’ll fallback to this.

@dopey: Although I don’t really need revocations because this should be used for localhost development, it would be still nice to have this fully working on WSL. Couldn’t badger be used in a way that it autodetects the database file format and offer an optional migration to the user?

We discussed this in the morning, and I’ll do my best to take a look this week. Current thinking is try to open the db with v2, if that fails then fallback to v1 and log a message that directs the user to the badger migration docs.

Edit: The other supported database, bbolt also got issues with latest WSL (go panic). How has the ca.json to be configured to not use database at all? I can’t just leave the db option empty: Error opening database of Type with source : database not supported.

Try omitting the db attribute entirely. I’ve just tried that and it works locally.