Skip site navigation (1) Skip section navigation (2)

Re: [HACKERS] s_lock.h problem on S/Linux

From: Keith Parks <emkxp01(at)mtcc(dot)demon(dot)co(dot)uk>
To: dg(at)illustra(dot)com
Cc: hackers(at)postgresql(dot)org
Subject: Re: [HACKERS] s_lock.h problem on S/Linux
Date: 1998-06-21 15:59:04
Message-ID: 199806211559.QAA06977@mtcc.demon.co.uk (view raw or flat)
Thread:
Lists: pgsql-hackers
David,

After making your suggested changes and then doing a "make s_lock_test"
I get the following error messages.


[postgres(at)sparclinux buffer]$ make s_lock_test
gcc -g -I../../../include -I../../../backend   -O2  -I../.. -DS_LOCK_TEST=1 
s_lock.c -o s_lock_test
/tmp/cca10794.s: Assembler messages:
/tmp/cca10794.s:290: Error: Bad expression
/tmp/cca10794.s:290: Error: Missing ')' assumed
/tmp/cca10794.s:290: Error: Bad expression
/tmp/cca10794.s:290: Error: Missing ')' assumed
/tmp/cca10794.s:290: Error: Illegal operands
/tmp/cca10794.s:440: Error: Bad expression
/tmp/cca10794.s:440: Error: Missing ')' assumed
/tmp/cca10794.s:440: Error: Bad expression
/tmp/cca10794.s:440: Error: Missing ')' assumed
/tmp/cca10794.s:440: Error: Illegal operands
make: *** [s_lock_test] Error 1     

If I compile with -save-temps and look at the s_lock.s file I see, on
line 290:-

.stabn 68,0,131,.LM9-s_lock
.LM9:
.LL45:
        ldstub [[%i0]], %o0 <-------
.stabn 68,0,134,.LM10-s_lock
.LM10:
        and %o0,0xff,%o0          
        

The double square braces look strange to me so I removed the single
braces in s_lock.h.

The modified file compiles OK and in s_lock.s I can see:-

.stabn 68,0,131,.LM9-s_lock
.LM9:
.LL45:
        ldstub [%i0], %o0
.stabn 68,0,134,.LM10-s_lock
.LM10:
        and %o0,0xff,%o0   
        
Now I know absoloutely nothing whatsoever about SPARC (or gnu)
assembler so the code changes could result in nothing like a
test and set function but...

[postgres(at)sparclinux buffer]$ make s_lock_test
gcc -g -I../../../include -I../../../backend   -O2  -I../.. -DS_LOCK_TEST=1 
s_lock.c -o s_lock_test
./s_lock_test
S_LOCK_TEST: this will hang for a few minutes and then abort
             with a 'stuck spinlock' message if S_LOCK()
             and TAS() are working.

FATAL: s_lock(00020be8) at s_lock.c:215, stuck spinlock. Aborting.

FATAL: s_lock(00020be8) at s_lock.c:215, stuck spinlock. Aborting.
make: *** [s_lock_test] IOT trap/Abort (core dumped)
make: *** Deleting file `s_lock_test'    

Running s_lock_test does result in a hang for a few minutes
and then a "stuck spinlock" message so perhaps it's not all
that bad. (Not sure about the core dump though :-( )

Keith.




dg(at)illustra(dot)com (David Gould)
> 
> > 
> > Hi hackers.
> > 
> > I am having problems with the new spinlock code on the SPARC linux
> > platform. (Latest CVSup)
> > 
> > The compiler doesn't seem to like the "asm" part of s_lock.h for (sparc)
> > 
> > Here's one of the compiles that fails.
> 
> Thank you for testing and reporting this. It is my fault of course, but as
> I don't have access to a sparc for testing I just did what I could. I am
> guessing here, but please apply the following to your pgsql and let me know
> what happens. Also, cd to src/storage/buffer and do 'make s_lock_test' as
> well.



Responses

pgsql-hackers by date

Next:From: Bruce MomjianDate: 1998-06-21 16:38:55
Subject: Re: [BUGS] About failed compile on BSDI 2.1
Previous:From: David GouldDate: 1998-06-21 01:07:27
Subject: Re: [HACKERS] s_lock.h problem on S/Linux

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group