Получение ошибки dysmutil malloc при использовании nstask Tool Exited с кодом 134
Это код, который я использую для создания сборки ios, используя nstask в моем приложении какао.
NSTask *task=[[NSTask alloc]init];
task.launchPath=@"/library/Frameworks/Mono.Framework/Commands/xbuild";
task.arguments= @[@"/p:Configuration=Release",@"/p:Platform=iPhone",@"/p:BuildIpa=false",@"/target:Build",@"/Users/xyz/Projects/SimpleDemo/SimpleDemo.sln"];
NSPipe *pipe=[[NSPipe alloc]init];
[task setStandardOutput:pipe];
NSFileHandle *outputFileHandle;
outputFileHandle = [[NSFileHandle alloc]init];
outputFileHandle=[pipe fileHandleForReading];
[outputFileHandle waitForDataInBackgroundAndNotify];
[[NSNotificationCenter defaultCenter] addObserverForName:NSFileHandleDataAvailableNotification object:outputFileHandle queue:nil usingBlock:^(NSNotification *notification){
NSData *output = [outputFileHandle availableData];
NSString *outStr = [[NSString alloc] initWithData:output encoding:NSUTF8StringEncoding];
NSLog(@"%@",outStr);
[outputFileHandle waitForDataInBackgroundAndNotify];
}];
@try {
[task launch];
[task waitUntilExit];
}
@catch (NSException *exception) {
NSLog(@"%@",[exception callStackSymbols]);
}
@finally {
}
я получаю эту ошибку при запуске кода
/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/iOS/Xamarin.iO S.Common.targets: error: инструмент завершен с кодом: 134. Вывод: предупреждение: (armv7) не удалось найти символ объектного файла для символа _xamarin_register_modules предупреждение: (armv7) не удалось найти символ объектного файла для символа _xamarin_register_assemblies предупреждение: (armv7) не удалось найти символ объектного файла для символа _xamarin_setup предупреждение: (armv7) не может найти символ объектного файла для символа _main предупреждение: (armv7) не удалось найти символ объектного файла для символа _OBJC_METACLASS_$_MonoTouchAppDelegate предупреждение: (armv7) не удалось найти символ объектного файла для символа _OBJC_CLASS _ $ _ MonoTouchAppDelegate
dsymutil (6764,0x7fff78631000) malloc: * ошибка для объекта 0x6000000fb400: освобожденный указатель не был выделен * установить точку останова в malloc_error_break для отладки
В этом процессе сборки ошибка возникает после генерации.app означает, что после генерации.app возникает проблема.
Примечание: если я запускаю эту команду с помощью терминала, то она работает без каких-либо ошибок, и.ipa генерируется. Проблема возникает только тогда, когда я использую nstask для запуска этой команды.
я использую el capitan и xcode 7.1.1. Любая помощь будет оценена.
1 ответ
Согласно предложению @Itachi, проблема связана с включением MallocNanoZone. Это необходимо явно удалить из среды NSTask.
Вот код, который я получил от IPABuddy
NSTask *task=[[NSTask alloc]init];
NSMutableDictionary *theEnvironment = [[NSProcessInfo processInfo].environment mutableCopy];
if (theEnvironment[@"MallocNanoZone"])
{
[theEnvironment removeObjectForKey:@"MallocNanoZone"];
}
task.environment = theEnvironment;
Надеюсь это поможет.