首页 > 其他分享 >执行“go mod tidy”遇到“misbehavior”错误

执行“go mod tidy”遇到“misbehavior”错误

时间:2024-12-05 19:21:53浏览次数:6  
标签:misbehavior err older fmt tidy newer go buf

执行“go mod tidy”报错下错误,执行“go clean -modcache”和删除“go env GOMODCACHE”指定目录均无效:

SECURITY ERROR
go.sum database server misbehavior detected!

old database:
        go.sum database tree
        3397826
        xyyhzdyAOat5li/EXx/MK1gONQf3LAGqArhBLzQVQt8=

        — sum.mooon.com ZD16BsDeu0l8HWHTrM3Axa9jy5Ctbbmj9FZ1AowqytSa22OZ7Se98hXT+88+mjuCAIY5KSAG/nV26LayhI5OyaA3cAb=

new database:
        go.sum database tree
        3398774
        MgvgQR/7OUAeth2F6s7qHqgBX7QNBIKhXfeN7iFPBes=

        — sum.mooon.com ZD16BtxccgOLtLlxqG5rx6vhz8vPBkqUTpW+loMoojYBqWcEeVWnxkKAMFtH2ynJrlXsOLLBfABqBJTxhyswvyh1mAe=

proof of misbehavior:
        duuII5nfe1EhWYdzwvAkuwY/teHJYPtw8Ip1Z/ebbOt=    internal error: generated inconsistent proof

删除项目的 go.sum 也不一定能解决,打新的 tag 可能也无用。可尝试删除文件 rm $(go env GOMODCACHE)/../sumdb/sum.mooon.com/latest 后重试,测试解决了此问题。

报这个错误的源代码文件 https://github.com/golang/mod/blob/master/sumdb/client.go

// checkTrees checks that older (from olderNote) is contained in newer (from newerNote).
// If an error occurs, such as malformed data or a network problem, checkTrees returns that error.
// If on the other hand checkTrees finds evidence of misbehavior, it prepares a detailed
// message and calls log.Fatal.
func (c *Client) checkTrees(older tlog.Tree, olderNote []byte, newer tlog.Tree, newerNote []byte) error {
	thr := tlog.TileHashReader(newer, &c.tileReader)
	h, err := tlog.TreeHash(older.N, thr)
	if err != nil {
		if older.N == newer.N {
			return fmt.Errorf("checking tree#%d: %v", older.N, err)
		}
		return fmt.Errorf("checking tree#%d against tree#%d: %v", older.N, newer.N, err)
	}
	if h == older.Hash {
		return nil
	}

	// Detected a fork in the tree timeline.
	// Start by reporting the inconsistent signed tree notes.
	var buf bytes.Buffer
	fmt.Fprintf(&buf, "SECURITY ERROR\n")
	fmt.Fprintf(&buf, "go.sum database server misbehavior detected!\n\n")
	indent := func(b []byte) []byte {
		return bytes.Replace(b, []byte("\n"), []byte("\n\t"), -1)
	}
	fmt.Fprintf(&buf, "old database:\n\t%s\n", indent(olderNote))
	fmt.Fprintf(&buf, "new database:\n\t%s\n", indent(newerNote))

	// The notes alone are not enough to prove the inconsistency.
	// We also need to show that the newer note's tree hash for older.N
	// does not match older.Hash. The consumer of this report could
	// of course consult the server to try to verify the inconsistency,
	// but we are holding all the bits we need to prove it right now,
	// so we might as well print them and make the report not depend
	// on the continued availability of the misbehaving server.
	// Preparing this data only reuses the tiled hashes needed for
	// tlog.TreeHash(older.N, thr) above, so assuming thr is caching tiles,
	// there are no new access to the server here, and these operations cannot fail.
	fmt.Fprintf(&buf, "proof of misbehavior:\n\t%v", h)
	if p, err := tlog.ProveTree(newer.N, older.N, thr); err != nil {
		fmt.Fprintf(&buf, "\tinternal error: %v\n", err)
	} else if err := tlog.CheckTree(p, newer.N, newer.Hash, older.N, h); err != nil {
		fmt.Fprintf(&buf, "\tinternal error: generated inconsistent proof\n")
	} else {
		for _, h := range p {
			fmt.Fprintf(&buf, "\n\t%v", h)
		}
	}
	c.ops.SecurityError(buf.String())
	return ErrSecurity
}

标签:misbehavior,err,older,fmt,tidy,newer,go,buf
From: https://www.cnblogs.com/aquester/p/18589260

相关文章

  • Storing Data in a MongoDB Database
    StoringDatainaMongoDBDatabase1IntroductionTherearetwomaincategoriesofdatabases:relationaldatabasesandnon-relationaldatabases.RelationaldatabasessuchasMySQL,SQLServer,andPostgre,storedataintablescontainingrecordsofthesa......
  • No.25 笔记 | 信息收集与Google语法的实践应用
    什么是信息收集?信息收集(InformationGathering)是渗透测试的第一步,其目的是通过各种手段收集目标的漏洞和弱点,为后续的攻击策略提供依据。正所谓“知己知彼,百战百胜”,信息收集的重要性如同战争中的情报工作,决定了渗透测试的复杂程度与成功几率。信息收集的分类主动信息......
  • 为什么不推荐使用jax ( jax vs pytorch)—— google推出jax后为什么迟迟没有得到业界
    在2017年后,Google的TensorFlow在与Facebook的pytorch的竞争中落败,于是为了重夺业内位置,Google在将开放重点从TensorFlow转为新开发一种新的工具框架,那就是jax。虽然在某种意义上来说Google已经放弃了TensorFlow,但是在Google内部依然保持着部分人员再继续维护和开发TensorFlow,但是......
  • 使用 Go 请求 YOLOv3 模型进行物体检测
    环境准备安装Go环境:如果你还没有安装Go,可以通过以下链接下载并安装:Go官方下载页面使用HTTP请求:我们将在Go程序中使用net/http包来发送请求和处理响应。如果你的物体检测模型已经部署为一个HTTP服务(例如使用Python和Flask部署),Go程序将向该服务发送HTTP......
  • MongoDB权威指南(第3版)(香农·布拉德肖,约恩·布拉齐尔,克里斯蒂娜·霍多罗夫)
    书在python33点(0MMongoDB简介MongoDB是一种面向文档的数据库,与传统的关系数据库不同,它采用无模式数据模型,易于使用、扩展和功能丰富。入门指南介绍了文档、集合、数据库的基本概念,以及如何启动MongoDB和MongoDBshell的基本操作。创建、更新和删除文档涵盖了插入、删除和......
  • 仅一份!创新点爆棚!VMD-MLR-NGO-DBiLSTM组合模型,精度高达99%!导师再也不用担心我的论文!
    仅一份!创新点爆棚!VMD-MLR-NGO-DBiLSTM组合模型,精度高达99%!导师再也不用担心我的论文!目录仅一份!创新点爆棚!VMD-MLR-NGO-DBiLSTM组合模型,精度高达99%!导师再也不用担心我的论文!效果一览基本介绍程序设计参考资料效果一览基本介绍1.Matlab实现限量发售!仅......
  • Google AdSense提高收入:CPM和eCPM及优化要点
    今年上半年,陆陆续续有GoogleAdSense用户发现广告计费模式更新成了CPM,而在已更新的用户中也有人发现收入有所降低。在CPM的计费模式之下要如何优化并提高收入?可以参考以下要点!一、CPM和eCPM1.什么是CPMCPM(Cost-Per-Mille),即每千次展示费用或每千次曝光费用,是针对广告商的指标......
  • Google AdSense提高收入:CPM和eCPM及优化要点
    今年上半年,陆陆续续有GoogleAdSense用户发现广告计费模式更新成了CPM,而在已更新的用户中也有人发现收入有所降低。在CPM的计费模式之下要如何优化并提高收入?可以参考以下要点!一、CPM和eCPM1.什么是CPMCPM(Cost-Per-Mille),即每千次展示费用或每千次曝光费用,是针对广告商的指标......
  • go语言实现双向循环链表
    双向循环链表简介双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表。//--------------------------------------......
  • 安装MongoDB报错或者使用net start MongoDB 报错解决
    报错信息:Service‘MongoDBServer(MongoDB)’(MongoDB)failedtostart.Verifythatyouhavesufficientprivilegestostartsystemservices.解决方案:可以先删除MongoDB服务scdeleteMongoDB然后在MongoDB下载地址里的Data目录创建db文件在log目录下创建MongoDB......