yangjian102621 / geekai

AI 助手全套开源解决方案,自带运营管理后台,开箱即用。集成了 ChatGPT, Azure, ChatGLM,讯飞星火,文心一言等多个平台的大语言模型。支持 MJ AI 绘画,Stable Diffusion AI 绘画,微博热搜等插件工具。采用 Go + Vue3 + element-plus 实现。
https://chat.geekai.me
Apache License 2.0
3.75k stars 960 forks source link

panic: runtime error: invalid memory address or nil pointer dereference #73

Closed destiny1123 closed 10 months ago

destiny1123 commented 10 months ago

⚠️ 确认 issue 是否已存在 ⚠️

GPT-3 or GPT-4

GPT-3.5

操作系统

Linux

Bug 描述 📝

使用MJ绘画的时候,有时候能成功,有时候直接抛出异常,提示 panic: runtime error: invalid memory address or nil pointer dereference 文件位置是在chatgpt-plus-main/api/service/mj/bot.go:121 以下是完整报错信息 panic: runtime error: invalid memory address or nil pointer dereference [signal SIGSEGV: segmentation violation code=0x1 addr=0x8 pc=0x1146d04]

goroutine 103 [running]: chatplus/service/mj.(Bot).messageUpdate(0xc0000102e8, 0xc000342380, 0xc0004bfb60) D:/chatgpt-plus-main (1)/chatgpt-plus-main/api/service/mj/bot.go:121 +0x104 github.com/bwmarrin/discordgo.messageUpdateEventHandler.Handle(0xc000508fd0?, 0x6d644a?, {0x13fedc0?, 0xc0004bfb60?}) C:/Users/Administrator/sdk/go1.20.4/pkg/mod/github.com/bwmarrin/discordgo@v0.27.1/eventhandlers.go:873 +0x38 created by github.com/bwmarrin/discordgo.(Session).handle C:/Users/Administrator/sdk/go1.20.4/pkg/mod/github.com/bwmarrin/discordgo@v0.27.1/event.go:171 +0x16a

重现步骤 🕹

使用的是docker部署的,使用的是有时候会报错,进度到93就抛出异常,然后这条任务就不会再执行了。有时候生成MJ图片又没有问题,出错概率挺频繁的。

你的应用配置信息

配置文件基本没变过

yangjian102621 commented 10 months ago

具体使用的是哪个版本的代码?或者 commitID 是多少?

destiny1123 commented 10 months ago

具体使用的是哪个版本的代码?或者 commitID 是多少?

使用的是3.2.0的版本

yangjian102621 commented 10 months ago

感谢反馈,这个问题在新版v3.2.2 已经修复,请更新版本试下。

destiny1123 commented 10 months ago

感谢反馈,这个问题在新版v3.2.2 已经修复,请更新版本试下。

使用最新版提示“MidJourney 池子中没有没有可用的服务!”,请问是什么原因会导致这个问题

yangjian102621 commented 10 months ago

配置选项改了,支持池子。你看下最新的配置文档MJ选项

destiny1123 commented 10 months ago

配置选项改了,支持池子。你看下最新的配置文档MJ选项 程序运行以后在执行MJ机器人的时候报错: panic: runtime error: invalid memory address or nil pointer dereference [signal 0xc0000005 code=0x0 addr=0x0 pc=0x224862f]

goroutine 105 [running]: chatplus/service/mj.(Bot).messageUpdate(0xc000114280, 0xc000424380, 0xc000427650) D:/chatgpt-plus-main (1)/chatgpt-plus-main/api/service/mj/bot.go:139 +0x16f github.com/bg5t/mydiscordgo.messageUpdateEventHandler.Handle(0xc000426b40, 0xc000424380, {0x2582160, 0xc000427650}) C:/Users/Administrator/sdk/go1.20.4/pkg/mod/github.com/bg5t/mydiscordgo@v0.28.1/eventhandlers.go:873 +0xa3 created by github.com/bg5t/mydiscordgo.(Session).handle C:/Users/Administrator/sdk/go1.20.4/pkg/mod/github.com/bg5t/mydiscordgo@v0.28.1/event.go:171 +0x245

// code \api\service\mj\bot.go func (b Bot) messageUpdate(s discordgo.Session, m *discordgo.MessageUpdate) { // ignore messages for other channels if m.GuildID != b.config.GuildId || m.ChannelID != b.config.ChanelId { return } // ignore messages for self if m.Author.ID == s.State.User.ID { return } 执行第三遍的时候,m.Author等于nil,前两遍都有值

配置文件如下: [[MjConfigs]] Enabled = true UserToken = "xxxxxxxxxxxxxxxx" BotToken = "xxxxxxxxxxxxxxx" GuildId = "xxxxxxxxxxxxxxxxxx" ChanelId = "xxxxxxxxxxxxxxxxx" UseCDN = false DiscordAPI = "" DiscordCDN = "" DiscordGateway = ""

请问是下面这几个参数没有配置的问题吗?要配什么? UseCDN = false DiscordAPI = "" DiscordCDN = "" DiscordGateway = ""

destiny1123 commented 10 months ago

m.GuildID != b.config.GuildId

我尝试着加一个判断,发现他可以正常工作了,不知道是不是这样操作的。 if m.Author == nil || m.Author.ID == s.State.User.ID { return }

yangjian102621 commented 10 months ago

这样操作是可以的。不过通常 m.Author 不会是 nil 的。估计是 API 有更新。