[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Bug#200215: some debug info... gdb and strace broken on casals?



reassign 200215 glibc
tags 200215 +patch, +sid, +sarge
thanks


Brendan O'Dea wrote:
>On Wed, Sep 03, 2003 at 10:03:25AM -0500, Drew Scott Daniels wrote:
>>On Tue, 2 Sep 2003, Colin Watson wrote:
>>
>>> > Have you had any luck figuring out why recent perl uploads FTBFS on mips?
>>>
>>> No. Sorry. I could've sworn I'd mailed a report of how far I'd got
>>> somewhere, but can't find it in my mail archives just now. Inserting a
>>> no-op PerlIO_printf(Perl_error_log, "") before the point of the crash in
>>> doio.c seemed to "fix" it, which points to dodgy memory handling
>>> elsewhere or something; don't have enough mips expertise to follow
>>> through properly though, and gdb and strace being semi-broken on
>>> casals.debian.org really doesn't help. Feel free to quote this wherever.
>
> I've managed to get a smallish test case for this bug (which appears to
> be kernel/gcc/libc related).

It is a glibc bug. The 'struct msqid_ds' definition doesn't match the
kernel one. I believe the appended patch fixes it, but haven't tested
it yet.

Btw, this means IPC is mostly broken ATM, which is probably causing
those autobuilder timeouts. I observe hanging make processes eating
cpu time on unstable.


Thiemo


2003-09-18  Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>

	* sysdeps/unix/sysv/linux/mips/bits/msq.h (msqid_ds): Add missing
	padding.


Index: sysdeps/unix/sysv/linux/mips/bits/msq.h
===================================================================
RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/mips/bits/msq.h,v
retrieving revision 1.1
diff -u -p -r1.1 msq.h
--- sysdeps/unix/sysv/linux/mips/bits/msq.h     26 Aug 2002 01:49:55 -0000      1.1
+++ sysdeps/unix/sysv/linux/mips/bits/msq.h     18 Sep 2003 10:24:45 -0000
@@ -39,15 +39,24 @@ struct msqid_ds
 {
   struct ipc_perm msg_perm;    /* structure describing operation permission */
   __time_t msg_stime;          /* time of last msgsnd command */
+#if __WORDSIZE == 32
+  unsigned long int __unused1;
+#endif
   __time_t msg_rtime;          /* time of last msgrcv command */
+#if __WORDSIZE == 32
+  unsigned long int __unused2;
+#endif
   __time_t msg_ctime;          /* time of last change */
+#if __WORDSIZE == 32
+  unsigned long int __unused3;
+#endif
   unsigned long int __msg_cbytes; /* current number of bytes on queue */
   msgqnum_t msg_qnum;          /* number of messages currently on queue */
   msglen_t msg_qbytes;         /* max number of bytes allowed on queue */
   __pid_t msg_lspid;           /* pid of last msgsnd() */
   __pid_t msg_lrpid;           /* pid of last msgrcv() */
-  unsigned long int __unused1;
-  unsigned long int __unused2;
+  unsigned long int __unused4;
+  unsigned long int __unused5;
 };

 #ifdef __USE_MISC



Reply to: