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

自动登录失败,Bot.close 时出现异常导致 Mirai Console 退出 #2740

Closed
cssxsh opened this issue Jul 18, 2023 · 1 comment
Closed
Labels
M 优先级: 主要 s:core 子系统: mirai-core t:bug 类型: bug
Milestone

Comments

@cssxsh
Copy link
Contributor

cssxsh commented Jul 18, 2023

问题描述

原 issue cssxsh/fix-protocol-version#61

2023-07-18 21:59:50 E/main: Failed to init MiraiConsole.
java.lang.IllegalStateException: unidbg-fetch-qsign by http://127.0.0.1:8080 与 ANDROID_PHONE(8.9.58) 似乎不匹配
	at fix-protocol-version-1.9.6.mirai2.jar//xyz.cssxsh.mirai.tool.KFCFactory.createForBot(KFCFactory.kt:92)
	at net.mamoe.mirai.internal.network.components.EncryptServiceHolderImpl.<init>(EncryptServiceHolder.kt:49)
	at net.mamoe.mirai.internal.QQAndroidBot.createBotLevelComponents(QQAndroidBot.kt:288)
	at net.mamoe.mirai.internal.QQAndroidBot$defaultBotLevelComponents$2.invoke(QQAndroidBot.kt:192)
	at net.mamoe.mirai.internal.QQAndroidBot$defaultBotLevelComponents$2.invoke(QQAndroidBot.kt:191)
	at net.mamoe.mirai.utils.LateinitMutableProperty.getValue(LateinitMutableProperty.kt:47)
	at net.mamoe.mirai.internal.QQAndroidBot.getDefaultBotLevelComponents(QQAndroidBot.kt:191)
	at net.mamoe.mirai.internal.QQAndroidBot.createNetworkLevelComponents(QQAndroidBot.kt:300)
	at net.mamoe.mirai.internal.QQAndroidBot$createNetworkHandler$1.invoke(QQAndroidBot.kt:312)
	at net.mamoe.mirai.internal.QQAndroidBot$createNetworkHandler$1.invoke(QQAndroidBot.kt:305)
	at net.mamoe.mirai.internal.network.handler.selector.AbstractKeepAliveNetworkHandlerSelectorKt$KeepAliveNetworkHandlerSelector$1.createInstance(AbstractKeepAliveNetworkHandlerSelector.kt:277)
	at net.mamoe.mirai.internal.network.handler.selector.AbstractKeepAliveNetworkHandlerSelector.refreshInstance(AbstractKeepAliveNetworkHandlerSelector.kt:249)
	at net.mamoe.mirai.internal.network.handler.selector.AbstractKeepAliveNetworkHandlerSelector.getCurrentInstanceOrCreate(AbstractKeepAliveNetworkHandlerSelector.kt:57)
	at net.mamoe.mirai.internal.network.handler.selector.SelectorNetworkHandler.getContext(SelectorNetworkHandler.kt:51)
	at net.mamoe.mirai.internal.network.handler.selector.SelectorNetworkHandler$scope$2.invoke(SelectorNetworkHandler.kt:54)
	at net.mamoe.mirai.internal.network.handler.selector.SelectorNetworkHandler$scope$2.invoke(SelectorNetworkHandler.kt:53)
	at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
	at net.mamoe.mirai.internal.network.handler.selector.SelectorNetworkHandler.getScope(SelectorNetworkHandler.kt:53)
	at net.mamoe.mirai.internal.network.handler.selector.SelectorNetworkHandler.close(SelectorNetworkHandler.kt:112)
	at net.mamoe.mirai.internal.AbstractBot.close(AbstractBot.kt:118)
	at net.mamoe.mirai.internal.QQAndroidBot.close(QQAndroidBot.kt:98)
	at net.mamoe.mirai.Bot.close(Bot.kt:188)
	at net.mamoe.mirai.console.internal.MiraiConsoleImplementationBridge$doStart$11$1.invokeSuspend(MiraiConsoleImplementationBridge.kt:433)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
	at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:284)
	at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:85)
	at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:59)
	at kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source)
	at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking$default(Builders.kt:38)
	at kotlinx.coroutines.BuildersKt.runBlocking$default(Unknown Source)
	at net.mamoe.mirai.console.internal.MiraiConsoleImplementationBridge.doStart$mirai_console(MiraiConsoleImplementationBridge.kt:369)
	at net.mamoe.mirai.console.MiraiConsoleImplementation$Companion.start(MiraiConsoleImplementation.kt:512)
	at net.mamoe.mirai.console.terminal.MiraiConsoleTerminalLoader.startAsDaemon(MiraiConsoleTerminalLoader.kt:182)
	at net.mamoe.mirai.console.terminal.MiraiConsoleTerminalLoader.startAsDaemon$default(MiraiConsoleTerminalLoader.kt:181)
	at net.mamoe.mirai.console.terminal.MiraiConsoleTerminalLoader.main(MiraiConsoleTerminalLoader.kt:59)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.base/java.lang.reflect.Method.invoke(Unknown Source)
	at org.itxtech.mcl.Utility.bootJars(Utility.java:86)
	at org.itxtech.mcl.Utility.bootJars(Utility.java:76)
	at org.itxtech.mcl.Utility.bootMirai(Utility.java:98)
	at org.itxtech.mcl.module.builtin.Boot.boot(Boot.java:113)
	at org.itxtech.mcl.module.ModuleManager.phaseBoot(ModuleManager.java:123)
	at org.itxtech.mcl.Loader.lambda$start$4(Loader.java:196)
	at org.itxtech.mcl.Loader.tryCatching(Loader.java:151)
	at org.itxtech.mcl.Loader.start(Loader.java:196)
	at org.itxtech.mcl.Loader.main(Loader.java:84)

复现

  1. 在 createForBot 中 throw IllegalStateException
  2. 先调用 login ,然后 调用 close
        net.mamoe.mirai.utils.Services.register(
            EncryptService.Factory::class.qualifiedName!!,
            EncryptService.Factory::class.qualifiedName!!,
        ) {
            object : EncryptService.Factory {
                override fun createForBot(
                    context: EncryptServiceContext,
                    serviceSubScope: CoroutineScope
                ): EncryptService {
                    throw IllegalStateException("...")
                }
            }
        }
        val bot = BotFactory.newBot(123456, "")
        try {
            bot.login()
        } catch (_: IllegalStateException) {
            bot.close()
        }

mirai-core 版本

2.15.0

bot-protocol

ANDROID_PHONE

其他组件版本

No response

系统日志

No response

网络日志

No response

补充信息

No response

@cssxsh
Copy link
Contributor Author

cssxsh commented Jul 18, 2023

}.onFailure {
mainLogger.error(it)
bot.close()
launch {
AutoLoginEvent.Failure(bot = bot, cause = it).broadcast()
}
}

@Karlatemp Karlatemp added t:bug 类型: bug M 优先级: 主要 s:core 子系统: mirai-core labels Jul 19, 2023
@Karlatemp Karlatemp added this to the 2.16.0-RC milestone Jul 19, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
M 优先级: 主要 s:core 子系统: mirai-core t:bug 类型: bug
Projects
None yet
Development

No branches or pull requests

2 participants