gpt4 book ai didi

ios - objective-c 线程 1 信号 SIGSTOP 应用程序崩溃

转载 作者:行者123 更新时间:2023-11-29 10:41:28 27 4
gpt4 key购买 nike

我正在尝试追踪一个看起来绝对是时间问题的错误。我有一个使用通用框架的应用程序。当该过程在框架中完成时,一个 NSNotification 被发送回应用程序。我们最近在我们的框架中添加了第三方框架。现在,在执行第三方框架的方法时,当执行返回到我们的框架时,我在控制台输出中收到以下错误:

Assertion failed: (exclusive), function assert_locked, file ../dep/include/boost/boost_1_55_0/boost/thread/pthread/shared_mutex.hpp, line 51.

但我不确定这是最终的问题,因为我们的框架继续执行并且 NSNotification 被发送回应用程序。在发送通知并且执行返回到我们框架中的调用方法(或方法调用)之后,我立即在执行线程上看到警告。然后,执行继续回到原来的调用方法,警告消失。

这是奇怪的部分。如果我非常缓慢地逐步执行代码,它可能会起作用。如果我不够慢,我会收到 SIGSTOP 并且代码永远不会返回到 UI。如果我太快,我会得到一个 SIGABRT。

我一直在尝试使用 Instuments 找出确切的问题。 This answer to a similar question支持我的怀疑,这是一个时间问题。我认为 boost assert_locked 断言可能与此有关。

我的代码很无聊,但我知道你想看,所以这里是:

- (void)generateImageTemplates:(UIImage *)src
{
int result = 0;
cv::Mat image = *(cv::Mat*)[self cvMatFromUIImage:src];

user = IEngine_InitUser();
int userID=0;
result = IEngine_AddFingerprintRAW(user, UNKNOWN, image.data, image.size().width, image.size().height);
result = IEngine_RegisterUser(user, &userID);

[[NSNotificationCenter defaultCenter] postNotificationName:@"InnovatricsComplete" object:self];
}

如果您想知道结果是什么,那是一个错误代码。到目前为止,这些都返回等于 0。意味着没有错误。一旦我可以成功返回 UI 而不会崩溃,我将处理这些错误。

控制返回方法调用:

- (void)generateImageTemplates:(UIImage *)processedImage
{
[self.captureCommand generateImageTemplates:processedImage];
}

控制返回到应用程序 View Controller 中的方法调用:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
if (buttonIndex == 0){
[self clearPressed:self.clearButton];
} else {
[self.cameraVC generateImageTemplates:self.processedImage];
}
}

最后是NSNotification回调代码:

- (void)onInnovatricsComplete:(NSNotification *)note
{
[self.cameraVC willMoveToParentViewController:nil];
[self.cameraVC.view removeFromSuperview];
[self.cameraVC removeFromParentViewController];
}

我警告过你这很无聊!

我完全被难住了!虽然我继续上网寻找线索,但有没有人可以帮助我解决这个问题?

谢谢。

以下是部分截图(倒序):

SIGABRT 2

SIGABRT 1

SIGSTOP Thread Switch

SIGSTOP Lock

Thread details

最佳答案

看看 NSUinteger 在 How to know where crash for postNotificationName:object:userInfo 中的回答

监听器可能会在收到通知之前被释放。

关于ios - objective-c 线程 1 信号 SIGSTOP 应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24374398/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com