On Wed, Apr 20, 2011 at 10:37:40PM +0100, Dominic Hargreaves wrote: > On Tue, Apr 27, 2010 at 09:53:47PM +0300, Niko Tyni wrote: > > This package fails to build on i386 with perl 5.12.0-1 from experimental: > > > > t/05.ops.t ........... 1/6 OverflowError in method > > 'get_devices_with_cap', argument 1 of type 'unsigned int' > > # Looks like you planned 6 tests but ran 1. > > # Looks like your test exited with 2 just after 1. > > t/05.ops.t ........... Dubious, test returned 2 (wstat 512, 0x200) > > Failed 5/6 subtests > > > > This very probably happens because 5.12.0-1 is configured with > > -Duse64bitint.
Having a quick look at this, I don't think this problem is specific to libdevice-cdio-perl, I think it may be an issue with SWIG. From the looks of it, SWIG doesn't handle -Duse64bitint correctly when presented with integer arguments > 2^31. The value from perl is a 64-bit IV; this confuses SWIG's argument handling code, which seems to be expecting that sizeof(perl IV) == sizeof(C int). Basically, the SWIG wrapper code that errors is: ecode1 = SWIG_AsVal_unsigned_SS_int SWIG_PERL_CALL_ARGS_2(ST(0), &val1); if (!SWIG_IsOK(ecode1)) { SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "get_devices_with_cap" "', argument " "1"" of type '" "unsigned int""'"); } The test that fails is passing in CDIO_FS_MATCH_ALL, which is 0xfffffff0. SWIG_AsVal_unsigned_SS_int calls SWIG_AsVal_unsigned_SS_long, which contains this code: if (SvUOK(obj)) { if (val) *val = SvUV(obj); return SWIG_OK; } else if (SvIOK(obj)) { long v = SvIV(obj); if (v >= 0) { if (val) *val = v; return SWIG_OK; } else { return SWIG_OverflowError; } } Running this in gdb, I can see that SvUOK returns false (as obj is an IV), and SvIOK returns true. SvIV correctly returns 0xffffffff0, which is -16 when put into a signed variable. This obviously makes the (v >= 0) test fail, causing the OverflowError. Anyway, I'd say this is a SWIG bug and not a bug in libdevice-cdio-perl. FWIW, I tested it with the version of swig2.0 in unstable and it has the same problem. Think this upstream SWIG bug is relevant: http://sourceforge.net/tracker/?func=detail&aid=1481958&group_id=1645&atid=101645 No activity in 4 years though :( -- Chris Butler <chr...@debian.org> GnuPG Key ID: 4096R/49E3ACD3 -- To UNSUBSCRIBE, email to debian-bugs-rc-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org