Виснет на этом куске (в memory.c)
// Freeing threads
for (i = 0; i < nb_threads; ++i)
{
id = find_thread(threads[i]);
if(id >= 0)
{
int res = sceKernelTerminateDeleteThread(id);
if (res < 0) {
DebugPrint(" Cannot Terminate thread, probably syscall failure");
DEBUG_PRINT("CANNOT TERMINATE:", threads[i], strlen(threads[i]) + 1);
DEBUG_PRINT("ERROR:", &res, sizeof(int));
} else {
sceKernelDelayThread(100);
}
} else {
DebugPrint(" Cannot find thread, probably syscall failure");
Всегда выводя Cannot find thread, probably syscall failure
Перебор потоков идет по размеру
int nb_threads = sizeof(threads) / sizeof(threads[0]);
А сами они определены вот где
const char* const threads[] = {"user_main", "sgx-psp-freq-thr", "sgx-psp-at3-th", "sgx-psp-at3-th", "sgx-psp-at3-th", "sgx-psp-at3-th", "sgx-psp-pcm-th", "FileThread"};
Восемь штук. Вот мне и выводится восемь сообщений об ошибке... Получается, что ни один из потоков лоадер не находит, а соответственно и не может освободить памяти под приложение. Отсюда и постоянный вис пикодрайва...
Последний раз редактировалось t0rm3nt0r; 12.04.2010 в 13:51.
|