GNU bug report logs - #20567
guile 2.0.11 - test failures on mips64 big-endian with n32 ABI

Previous Next

Package: guile;

Reported by: "Schaefer, Frank" <frank.schaefer <at> tekcomms.com>

Date: Wed, 13 May 2015 19:06:02 UTC

Severity: normal

Full log


View this message in rfc822 format

From: "Schaefer, Frank" <frank.schaefer <at> tekcomms.com>
To: 20567 <at> debbugs.gnu.org
Subject: bug#20567: guile 2.0.11 - test failures on mips64 big-endian with n32 ABI
Date: Wed, 13 May 2015 18:31:12 +0000
[Message part 1 (text/plain, inline)]
I've encountered two test failures with guile 2.0.11 on mips64 big-endian, whenever I build with -mabi=n32 (these test failures do not occur with -mabi=64).  At least one of them I have resolved with the attached patch.

First testcase failure: test-ffi (fixed by my patch).  The guile code apparently assumes that sizeof(ffi_arg)<=sizeof(void **).  This is a faulty assumption; it holds on *most* platforms, but with the mips64 n32 ABI, sizeof(void **)==4, and sizeof(ffi_arg)==8.  So every foreign function that returns a pointer is liable to corrupt data, and anyone retrieving the return value as a simple void * is only going to get sign-extension garbage on big-endian (usually NULL).

Second testcase failure: check-guile fails due to 'ERROR: foreign.test: procedure->pointer: qsort - arguments: ((null-pointer-error "pointer->bytevector" "null pointer dereference" () ()))'.  I strongly suspect it's related to the ffi_arg issue mentioned above, but I'm still peeling away macro ugliness to track it down.  If anyone wants to pitch in with additional guidance or patchwork, I'd be happy to listen and test.

(The patch applies against 2.0.11 release or against current HEAD, where it also fixes the new testcases for test-foreign-object-scm and test-foreign-object-c.  HEAD also fails the test-out-of-memory case, though, which precludes further unit tests.)
[0001-use-ffi_arg-instead-of-void-to-hold-FFI-call-return-.patch (application/octet-stream, attachment)]

This bug report was last modified 9 years and 76 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.