Получение ошибки 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;

Надеюсь это поможет.

Другие вопросы по тегам