Re: [HACKERS] Solaris ASM problem

2006-04-29 Thread Theo Schlossnagle

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

2006-04-29 Thread Theo Schlossnagle

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

2006-04-29 Thread Theo Schlossnagle

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

2006-04-29 Thread Theo Schlossnagle

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

2006-04-29 Thread Bruce Momjian
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

2006-04-28 Thread Kris Jurka



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

2006-04-28 Thread Kris Jurka



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

2006-04-28 Thread Kris Jurka



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