From: | Unprivileged user <nobody> |
---|---|
To: | pgsql-ports(at)postgresql(dot)org |
Subject: | Port Bug Report: non-OSF Alpha spin lock code seems to be incorrect |
Date: | 1999-06-04 05:04:00 |
Message-ID: | 199906040504.BAA28940@hub.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-ports |
============================================================================
POSTGRESQL BUG REPORT TEMPLATE
============================================================================
Your name : Christopher C. Chimelis
Your email address : chris(at)classnet(dot)med(dot)miami(dot)edu
Category : runtime: back-end
Severity : critical
Summary: non-OSF Alpha spin lock code seems to be incorrect
System Configuration
--------------------
Operating System : Linux 2.2.1 ELF glibc 2.1.1
PostgreSQL version : 6.5beta1
Compiler used : egcs 1.1.2
Hardware:
---------
Linux alpha 2.2.1 #4 Sat Feb 13 03:24:10 CET 1999 alpha unknown
Alpha Multia/UDB 166MHz 128M RAM
Actually does the same thing on all Alphas running Linux from what I can tell
Versions of other tools:
------------------------
gmake 3.77
--------------------------------------------------------------------------
Problem Description:
--------------------
This problem occurs with PostgreSQL 6.4.x as well as the new beta snapshot. It seems that on the initial 'initdb' during setup/installation, initdb dies with:
FATAL: s_lock(202e88c0) at spin.c:114, stuck spinlock. Aborting.
I tried altering the delay timing on the detection of stuck spin locks, but it didn't help. So, I then delved into the spin lock asm code contained in src/include/storage/s_lock.h.
Now, my assembly is VERY rusty (I barely know anything at all), so I figured the best way to approach this was to compare the code contained within (basically it's under the #ifdef gcc and __alpha sections -- NOT the OSF stuff) to the working spin lock implementations within the 2.2.x Linux kernel series (include/asm-alpha/{system.h,spinlock.h} and noticed QUITE a few differences in basic instructions. Granted, they do use slightly different typed elements, but from what I can tell, the kernel's code is correct and pgsql's backend isn't.
If possible, can you take a look at both and maybe we can work on a fix for this together? I would be happy to send you all files involved, but unfortunately cannot help to fix the asm involved (I'm trying to find someone competent on the alphas now).
--------------------------------------------------------------------------
Test Case:
----------
just run initdb on an Alpha running Linux and pgsql 6.4.x or 6.5beta1
--------------------------------------------------------------------------
Solution:
---------
The backend code for handling spin locks on non-OSF (ie. uses gcc) Alphas needs to be compared to the spin lock code in the 2.2.x kernel series and fixed (using the kernel code as a sample of working spin lock handling). I will help test when it's fixed if needed.
--------------------------------------------------------------------------
From | Date | Subject | |
---|---|---|---|
Next Message | Unprivileged user | 1999-06-04 20:10:53 | Port Bug Report: Include file mismatch: stdio.h, stdlib.h, unistd.h |
Previous Message | someone | 1999-06-04 03:31:05 | Redhat 5.2 on alpha-noname |