Я был назначен на указатель, и он сразу был свободен, но sigsegv возникает в зависимости от некоторых устройств и параметров xlc.
xlC_r -o cc.o cc -lhm имеет место sigsegv, но xlC_r -o cc.o cc работает.
(опция lhm связывает libhm.a libhu.a.)
(malloc и free works. Произошли только posix_memalign и free sigsegv.)
Исходный код:
#include<stdlib.h>
#include<stdio.h>
int main()
{
void * sPtr = NULL;
size_t sAlign = 8388608;
size_t sSize = 8388648;
int sRet = 0;
sRet = posix_memalign(&sPtr, sAlign, sSize);
printf( "after malloc : %p return : %d\n", sPtr, sRet );
free(sPtr);
printf( "after free\n" );
return 0;
}
Работает:
aix7.1 tl3 IBM XL C / C ++ для AIX, V12.1 (5765-J02, 5725-C72) Версия: 12.01.0000.0000
aix6.1 tl9 IBM XL C / C ++ для AIX, V10.1 Версия: 10.01.0000.0008
Результат:
after malloc : 22000000 return : 0
after free
, но
aix6.1 tl3 IBMXL C / C ++ для AIX, V10.1 Версия: 10.01.0000.0008
aix5.3 tl9 IBM XL C / C ++ для AIX, V10.1 Версия: 10.01.0000.0000
aix5.3 tl1 C для AIX версии 6.0.0.0 Версия: 10.01.0000.0000
Результат:
after malloc : 22000000 return : 0
Segmentation fault (core dumped)
% dbx cc.o core
Type 'help' for help.
[using memory image in core]
reading symbolic information ...
Segmentation fault in _ufree at 0xd3c0fcc4 ($t1)
0xd3c0fcc4 (_ufree+0x44) 80be0000 lwz r5,0x0(r30)
(dbx) where
_ufree(??) at 0xd3c0fcc4
cbase.free(??) at 0xd2b7c048
main(), line 16 in "c.c"
Я не решил эту проблему, хотя пытался более недели.Я искал отчет об ошибке в AIX, но не смог его найти.
Невозможно удалить оба параметра posix_memalign и lhm.
Знаете ли вы обходной путь или как его решить?