diff --git a/src/goDebugFactory.ts b/src/goDebugFactory.ts
index d822039..241cee6 100644
--- a/src/goDebugFactory.ts
+++ b/src/goDebugFactory.ts
@@ -8,7 +8,6 @@
 import stream = require('stream');
 import vscode = require('vscode');
 import { OutputEvent, TerminatedEvent } from 'vscode-debugadapter';
-import { killProcessTree } from './utils/processUtils';
 import getPort = require('get-port');
 import path = require('path');
 import * as fs from 'fs';
diff --git a/src/goToolsInformation.ts b/src/goToolsInformation.ts
index 04afe9f..1785726 100644
--- a/src/goToolsInformation.ts
+++ b/src/goToolsInformation.ts
@@ -223,7 +223,7 @@
 		replacedByGopls: false,
 		isImportant: true,
 		description: 'Go debugger & debug adapter (Delve DAP)',
-		defaultVersion: 'v1.7.1-0.20210804080032-f95340ae1bf9', // pinned version
+		defaultVersion: 'f95340ae1bf9', // pinned version
 		minimumGoVersion: semver.coerce('1.12'), // dlv requires 1.12+ for build
 		latestVersion: semver.parse('v1.7.1-0.20210804080032-f95340ae1bf9'),
 		latestVersionTimestamp: moment('2021-08-04', 'YYYY-MM-DD')
diff --git a/test/integration/install.test.ts b/test/integration/install.test.ts
index 00eaef3..ed8f0f6 100644
--- a/test/integration/install.test.ts
+++ b/test/integration/install.test.ts
@@ -213,14 +213,12 @@
 		fs.writeFileSync(path.join(dir, 'list'), `${versions.join('\n')}\n`);
 
 		versions.map((version) => {
-			if (version === 'master') {
-				// for dlv-dap that retrieves the version from master
+			if (!version.match(/^v\d+\.\d+\.\d+/)) {
+				// for dlv-dap that retrieves the version from a revision (commit hash)
 				const resolvedVersion = tool.latestVersion?.toString() || '1.0.0';
+				const infoPath = path.join(dir, `${version}.info`);
 				version = `v${resolvedVersion}`;
-				fs.writeFileSync(
-					path.join(dir, 'master.info'),
-					`{ "Version": "${version}", "Time": "2020-04-07T14:45:07Z" } `
-				);
+				fs.writeFileSync(infoPath, `{ "Version": "${version}", "Time": "2020-04-07T14:45:07Z" } `);
 			}
 
 			// Write the go.mod file.
diff --git a/tools/generate.go b/tools/generate.go
index a3f64f7..e3169d1 100644
--- a/tools/generate.go
+++ b/tools/generate.go
@@ -15,6 +15,7 @@
 import (
 	"bytes"
 	"encoding/json"
+	"errors"
 	"flag"
 	"fmt"
 	"io"
@@ -23,6 +24,7 @@
 	"os"
 	"os/exec"
 	"path/filepath"
+	"regexp"
 	"sort"
 	"strings"
 
@@ -235,6 +237,12 @@
 	if err != nil {
 		log.Fatal(err)
 	}
+	// Due to https://github.com/golang/vscode-go/issues/1682, we cannot use
+	// pseudo-version as the pinned version reliably.
+	dlvRevOrStable := dlvVersion.Version
+	if rev, err := pseudoVersionRev(dlvVersion.Version); err == nil { // pseudo-version
+		dlvRevOrStable = rev
+	}
 
 	// Check for the latest gopls version.
 	versions, err := listAllModuleVersions("golang.org/x/tools/gopls")
@@ -269,7 +277,7 @@
 	}
 
 	// TODO(suzmue): change input to json and avoid magic string printing.
-	toolsString := fmt.Sprintf(string(data), goplsVersion.Version, goplsVersion.Time[:len("YYYY-MM-DD")], goplsVersionPre.Version, goplsVersionPre.Time[:len("YYYY-MM-DD")], dlvVersion.Version, dlvVersion.Version, dlvVersion.Time[:len("YYYY-MM-DD")])
+	toolsString := fmt.Sprintf(string(data), goplsVersion.Version, goplsVersion.Time[:len("YYYY-MM-DD")], goplsVersionPre.Version, goplsVersionPre.Time[:len("YYYY-MM-DD")], dlvRevOrStable, dlvVersion.Version, dlvVersion.Time[:len("YYYY-MM-DD")])
 
 	// Write tools section.
 	b.WriteString(toolsString)
@@ -685,3 +693,19 @@
 	}
 	return b.String()
 }
+
+// pseudoVersionRev extracts the revision info if the given version is pseudo version.
+// We wanted to use golang.org/x/mod/module.PseudoVersionRev, but couldn't due to
+// an error in the CI. This is a workaround.
+//
+// It assumes the version string came from the proxy, so a valid, canonical version
+// string. Thus, the check for pseudoversion is not as robust as golang.org/x/mod/module
+// offers.
+func pseudoVersionRev(ver string) (rev string, _ error) {
+	var pseudoVersionRE = regexp.MustCompile(`^v[0-9]+\.(0\.0-|\d+\.\d+-([^+]*\.)?0\.)\d{14}-[A-Za-z0-9]+(\+[0-9A-Za-z-]+(\.[0-9A-Za-z-]+)*)?$`)
+	if strings.Count(ver, "-") < 2 || !pseudoVersionRE.MatchString(ver) {
+		return "", errors.New("not a pseudo version")
+	}
+	j := strings.LastIndex(ver, "-")
+	return ver[j+1:], nil
+}
