Re: [HACKERS] Solaris ASM problem
Kris Jurka wrote: On Fri, 28 Apr 2006, Theo Schlossnagle wrote: Kris Jurka wrote: Anyway the test exits with Stuck spinlock (80618e9) detected at ./s_lock.c:355. on a linux gcc build this exits with Stuck spinlock (0x5013ad) detected at ./s_lock.c:402. This seems like a different problem, no? The patch I sent in didn't touch any of the linux assembly bits. The linux test should pass to the end without an issue right? No, that's the desired ending. It prints: S_LOCK_TEST: this will print 1000 stars and then exit with a 'stuck spinlock' message if S_LOCK() and TAS() are working. The solaris version is just getting stuck before at another point before the expected stuck point. My workstation is running 32bit solaris.. I can build and debug it here... I'll give that a spin (hehe). -- // Theo Schlossnagle // Principal Engineer -- http://www.omniti.com/~jesus/ // Ecelerity: Run with it. -- http://www.omniti.com/ ---(end of broadcast)--- TIP 4: Have you searched our list archives? http://archives.postgresql.org
Re: [HACKERS] Solaris ASM problem
Kris Jurka wrote: On Fri, 28 Apr 2006, Theo Schlossnagle wrote: What platform is that? (OS rev, architecture and word size)? I tested the changes I submitted on Solaris 10 amd64. $ uname -a SunOS albert 5.9 Generic_112234-03 i86pc i386 i86pc $ cc -V cc: Sun WorkShop 6 update 2 C 5.3 Patch 111680-09 2003/05/18 Kris Jurka The file that uses the spinlocks: /src/backend/storage/lmgr/s_lock.c can be compiled standalone with -DS_LOCK_TEST Can you compile that and run the test. I'd be happy to troubleshoot it hands-on, but I don't have access to that box. Best regards, Theo -- // Theo Schlossnagle // Principal Engineer -- http://www.omniti.com/~jesus/ // Ecelerity: Run with it. -- http://www.omniti.com/ ---(end of broadcast)--- TIP 5: don't forget to increase your free space map settings
Re: [HACKERS] Solaris ASM problem
Kris Jurka wrote: On Fri, 28 Apr 2006, Theo Schlossnagle wrote: The file that uses the spinlocks: /src/backend/storage/lmgr/s_lock.c can be compiled standalone with -DS_LOCK_TEST To get the test to compile I had to link in tas.o as the attached patch shows. Unfortunately this doesn't work for platforms that don't have a tas.o, bailing out with file not found. Perhaps it's not important to fix this test, but I thought I'd mention it. Anyway the test exits with Stuck spinlock (80618e9) detected at ./s_lock.c:355. on a linux gcc build this exits with Stuck spinlock (0x5013ad) detected at ./s_lock.c:402. This seems like a different problem, no? The patch I sent in didn't touch any of the linux assembly bits. The linux test should pass to the end without an issue right? -- // Theo Schlossnagle // Principal Engineer -- http://www.omniti.com/~jesus/ // Ecelerity: Run with it. -- http://www.omniti.com/ ---(end of broadcast)--- TIP 4: Have you searched our list archives? http://archives.postgresql.org
Re: [HACKERS] Solaris ASM problem
Bruce Momjian wrote: Kris Jurka wrote: Bruce Momjian wrote: Log Message: --- Modify Solaris compiler build rules to use the cpp preprocessor, the the x86 file. Well it compiles now, but it doesn't seem to work: http://pgbuildfarm.org/cgi-bin/show_log.pl?nm=kudu&dt=2006-04-28%2016:30:01 selecting default max_connections ... Abort - core dumped creating template1 database in /export/home/pgfarm/forte/HEAD/pgsql.5120/src/test/regress/./tmp_check/data/base/1 ... PANIC: stuck spinlock (ddb0) detected at lwlock.c:358 OK, now that I have modified the build system to properly handle the preprocessing, it seems we have a problem with the ASM instructions. Theo? Comments? What platform is that? (OS rev, architecture and word size)? I tested the changes I submitted on Solaris 10 amd64. -- // Theo Schlossnagle // Principal Engineer -- http://www.omniti.com/~jesus/ // Ecelerity: Run with it. -- http://www.omniti.com/ ---(end of broadcast)--- TIP 5: don't forget to increase your free space map settings
Re: [HACKERS] Solaris ASM problem
Theo Schlossnagle wrote: > Kris Jurka wrote: > > > > > > > On Fri, 28 Apr 2006, Theo Schlossnagle wrote: > > > >> Kris Jurka wrote: > >> > >>> Anyway the test exits with > >>> Stuck spinlock (80618e9) detected at ./s_lock.c:355. > >>> > >>> on a linux gcc build this exits with > >>> Stuck spinlock (0x5013ad) detected at ./s_lock.c:402. > >> > >> > >> This seems like a different problem, no? The patch I sent in didn't > >> touch any of the linux assembly bits. The linux test should pass to > >> the end without an issue right? > >> > > > > No, that's the desired ending. It prints: > > > > S_LOCK_TEST: this will print 1000 stars and then > > exit with a 'stuck spinlock' message > > if S_LOCK() and TAS() are working. > > > > The solaris version is just getting stuck before at another point before > > the expected stuck point. > > I downloaded and tested this on my box. The first thing I noticed is > that when compiling tas.s on Solaris 10 the -P flag was omitted (which > is needed to have the #ifdef's process correctly). I did an: as -P > tas.s by hand and then was able to repeat your problem. You should see in backend/port/Makfile: $(CC) $(CFLAGS) -c -P $< Perhaps you didn't get that version yet. > Looks like part of my patch wasn't applied (or I neglected to send it > all). The cas operations are all word operations so the slock_t _MUST_ > be changed to a word. Sorry, yes, that is my fault. I had to modify the macro test you defined from __amd64 to __x86_64__, and didn't see the change in the typedef. Fix applied. --- > > In src/include/storage/s_lock.h in the sun section, the slock_t must be > an unsigned int: > > ; cvs diff -u src/include/storage/s_lock.h > Index: src/include/storage/s_lock.h > === > RCS file: /projects/cvsroot/pgsql/src/include/storage/s_lock.h,v > retrieving revision 1.151 > diff -u -r1.151 s_lock.h > --- src/include/storage/s_lock.h28 Apr 2006 03:43:19 - > 1.151 > +++ src/include/storage/s_lock.h29 Apr 2006 02:48:45 - > @@ -765,7 +765,7 @@ > > #if defined(__sun) && (defined(__i386) || defined(__x86_64__) || > defined(__sparc__) || defined(__sparc)) > #define HAS_TEST_AND_SET > -typedef unsigned char slock_t; > +typedef unsigned int slock_t; > > extern slock_t pg_atomic_cas(volatile slock_t *lock, slock_t with, > > slock_t cmp); > > -- Bruce Momjian http://candle.pha.pa.us EnterpriseDBhttp://www.enterprisedb.com + If your life is a hard drive, Christ can be your backup. + ---(end of broadcast)--- TIP 2: Don't 'kill -9' the postmaster
Re: [HACKERS] Solaris ASM problem
On Fri, 28 Apr 2006, Theo Schlossnagle wrote: Kris Jurka wrote: Anyway the test exits with Stuck spinlock (80618e9) detected at ./s_lock.c:355. on a linux gcc build this exits with Stuck spinlock (0x5013ad) detected at ./s_lock.c:402. This seems like a different problem, no? The patch I sent in didn't touch any of the linux assembly bits. The linux test should pass to the end without an issue right? No, that's the desired ending. It prints: S_LOCK_TEST: this will print 1000 stars and then exit with a 'stuck spinlock' message if S_LOCK() and TAS() are working. The solaris version is just getting stuck before at another point before the expected stuck point. Kris Jurka ---(end of broadcast)--- TIP 4: Have you searched our list archives? http://archives.postgresql.org
Re: [HACKERS] Solaris ASM problem
On Fri, 28 Apr 2006, Theo Schlossnagle wrote: The file that uses the spinlocks: /src/backend/storage/lmgr/s_lock.c can be compiled standalone with -DS_LOCK_TEST To get the test to compile I had to link in tas.o as the attached patch shows. Unfortunately this doesn't work for platforms that don't have a tas.o, bailing out with file not found. Perhaps it's not important to fix this test, but I thought I'd mention it. Anyway the test exits with Stuck spinlock (80618e9) detected at ./s_lock.c:355. on a linux gcc build this exits with Stuck spinlock (0x5013ad) detected at ./s_lock.c:402. Kris Jurka? src/backend/storage/lmgr/s_lock_test Index: src/backend/storage/lmgr/Makefile === RCS file: /projects/cvsroot/pgsql/src/backend/storage/lmgr/Makefile,v retrieving revision 1.20 diff -c -r1.20 Makefile *** src/backend/storage/lmgr/Makefile 7 Oct 2004 00:08:04 - 1.20 --- src/backend/storage/lmgr/Makefile 28 Apr 2006 21:13:52 - *** *** 21,26 --- 21,27 s_lock_test: s_lock.c $(top_builddir)/src/port/libpgport.a $(CC) $(CPPFLAGS) $(CFLAGS) -DS_LOCK_TEST=1 $(srcdir)/s_lock.c \ + $(top_builddir)/src/backend/port/tas.o \ -L $(top_builddir)/src/port -lpgport -o s_lock_test check: s_lock_test ---(end of broadcast)--- TIP 6: explain analyze is your friend
Re: [HACKERS] Solaris ASM problem
On Fri, 28 Apr 2006, Theo Schlossnagle wrote: What platform is that? (OS rev, architecture and word size)? I tested the changes I submitted on Solaris 10 amd64. $ uname -a SunOS albert 5.9 Generic_112234-03 i86pc i386 i86pc $ cc -V cc: Sun WorkShop 6 update 2 C 5.3 Patch 111680-09 2003/05/18 Kris Jurka ---(end of broadcast)--- TIP 6: explain analyze is your friend