Исправление для Wine 1.1.8-1.1.9 (FreeBSD)
November 30, 2008 on 12:00 am | In Uncategorized |С момента выхода порта wine 1.1.8 с ошибкой “unable to load.. invalid address” успели выйти ещё две версии порта, обе с версией 1.1.9. К сожалению, ошибку так и не исправили, и если собрать порт как есть, он так же не будет работать.
Но есть хорошая новость - в рассылке FreeBSD Alex Kozlov предложил патч, который решает проблему и делает wine снова работающим.
Здесь ссылка на оригинальное сообщение с патчем для wine.
Вкратце, нужно записать в файл следующий патч:
@@ -1250,8 +1254,13 @@
}
/* try to find space in a reserved area for the virtual heap */
- if (!wine_mmap_enum_reserved_areas( alloc_virtual_heap, &heap_base, 1 ))
+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
+ heap_base = wine_anon_mmap( address_space_limit - 10 * VIRTUAL_HEAP_SIZE,
+ VIRTUAL_HEAP_SIZE, PROT_READ|PROT_WRITE, 0 );
+#else
+ if (!wine_mmap_enum_reserved_areas( alloc_virtual_heap, &heap_base, 0 ))
heap_base = wine_anon_mmap( NULL, VIRTUAL_HEAP_SIZE, PROT_READ|PROT_WRITE, 0 );
+#endif
assert( heap_base != (void *)-1 );
virtual_heap = RtlCreateHeap( HEAP_NO_SERIALIZE, heap_base, VIRTUAL_HEAP_SIZE,
И затем наложить этот патч на файл dlls/ntdll/virtual.c, по умолчанию это будет /usr/ports/emulators/wine/work/wine-1.1.9/dlls/ntdll/virtual.c (patch /usr/ports/emulators/wine/work/wine-1.1.9/dlls/ntdll/virtual.c < patch.file), и пересобрать wine. Важно: файл появится только в процессе сборки порта, когда уже загрузились исходные коды и началась сборка. Предложенный в сообщении вариант “положить файл в emulators/wine/files” почему-то не сработал.
P.S. Не стоит забывать, что любому админу нужен хороший мониторинг серверов Без этого - не обойтись!
No Comments yet
Sorry, the comment form is closed at this time.