Skip to content

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

@cssxsh

Description

@cssxsh

问题描述

原 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    M优先级: 主要s:core子系统: mirai-coret:bug类型: bug

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions