Issue #6584 has been reported by ngoto (Naohisa G.).
Bug #6584: Segmentation fault in DL::TestFunc#test_qsort1 on sparc
Solaris10
Author: ngoto (Naohisa G.)
Status: Open
Priority: Normal
Assignee: ngoto (Naohisa G.)
Category: test
Target version:
ruby -v: 2.0.0dev (2012-06-08) [sparc64-solaris2.10]
qsort(3)のプロトタイプ宣言は
void qsort(void *base, size_t nmemb, size_t size,
int(*compar)(const void *, const void *));
ですが、test/dl/test_func.rb の test_qsort1() と test_qsort2() では
qsort = Function.new(CFunc.new(@libc[‘qsort’], TYPE_VOID,
‘qsort’),
[TYPE_VOIDP, TYPE_INT, TYPE_INT, TYPE_VOIDP])
のように、size_t の変数を TYPE_INT で宣言しています。
このため、sparc Solaris10 の64ビット環境では、Segmentation Fault が発生します。
TYPE_INT を TYPE_SIZE_T に変更すると大丈夫でした。