PEPPLER.ORG
Michael Peppler
Sybase Consulting
Menu
Home
Sybase on Linux
Install Guide for Sybase on Linux
General Sybase Resources
General Perl Resources
Freeware
Sybperl
Sybase::Simple
DBD::Sybase
BCP Tool
Bug Tracker
Mailing List Archive
Downloads Directory
FAQs
Sybase on Linux FAQ
Sybperl FAQ
Personal
Michael Peppler's resume

sybperl-l Archive

Up    Prev    Next    

From: Michael Peppler <mpeppler at mbay dot net>
Subject: Linking ctlib-linux-elf-dynamic on RedHat 5.1
Date: Aug 24 1998 2:09PM

Ted Law writes:
 > After hours of machine level debugging, I finally figured out what's
 > going on.  The symtom was that DBD::Sybase and Sybperl will work when
 > running from bash but not from zsh, whether it was linked dynamically or
 > statically.  It turned out to be just a smoke screen.  The real problem
 > is that ctlib-linux-elf-dynamic was compiled with a definition of struct
 > sigaction that is different from the one compiled into glibc 6 used in
 > RedHat 5.1.
 > 
 > The offsets for sa_mask, sa_flags, and sa_restorer were 4, 132, 136,
 > respectively in glibc.  But ctlib-linux-elf-dynamic assumed 4, 8, 12.
 > So when sigaction is called with a non-null value for old_act, glibc
 > actually overwrites part of the stack.  Then, when the overwritten part
 > is used as an address to write to,  a SEG fault occurs.  The reason why
 > it would work when running from bash was that the incorrect address
 > happens to fall into the unprotected gap between two shared libraries.
 > 
 > A workaround would be to write a wrapper for all struct sigaction
 > related routines to bridge the two sides.  But I don't know how to do
 > that.  Would some one please take this on?

Wow!

Thanks for spending the time to find the problems!

Now to find a way to actually solve the problems....

Michael
-- 
Michael Peppler         -||-  Data Migrations Inc.
mpeppler@mbay.net       -||-  http://www.mbay.net/~mpeppler
Int. Sybase User Group  -||-  http://www.isug.com