Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1217241
  • 博文数量: 185
  • 博客积分: 50
  • 博客等级: 民兵
  • 技术积分: 3934
  • 用 户 组: 普通用户
  • 注册时间: 2007-09-11 13:11

iihero@ChinaUnix, ehero.[iihero] 数据库技术的痴迷爱好者. 您可以通过iihero AT qq.com联系到我 以下是我的三本图书: Sybase ASE in Action, Oracle Spatial及OCI高级编程, Java2网络协议内幕






分类: Sybase

2013-07-22 14:09:32




有一个CR#CR 479363,专门解决这个问题。15.0.2 ESD #4 and 15.0.1 Cluster Edition ESD #2.







If you are going to be using ASE 12.5 or ASE 15 with the upcomingRed Hat Enterprise Linux 5.0, there are two CRs that you need to knowabout:

  1. CR 450004 – XP Server and Backupserver (64bit)
  2. CR 432482 – ASE 15

The problem is the result of using the jmp() and longjmp() functions in the GNU C Library version 2.4 (glibc 2.4).

setjmp() and longjmp() are useful for dealing witherrors and interrupts encountered in a low-level subroutine of aprogram. setjmp() saves the stack context/environment in env for lateruse by longjmp(). The stack context will be invalidated if the functionwhich called setjmp() returns.

Starting in glibc 2.4, the jmpbuf is unavailable due to a securityexploit known for several years.  Restricting access to the jmpbuf wasan effort by the glibc maintainers to ‘close this hole’ by forcing theapplication writers to use the sigsetjmp() and siglongjmp() instead.

The problem with using sigsetjmp() and siglongjmp() is that theyaren’t thread safe.  This is supposed to be fixed in glibc 2.6according to a contact at Sybase but Sybase *does* have a workaroundfor this issue and will be putting it into the ASE v15 codeline whenthey perform the RHEL 5 certification sometime next year.

I wasn’t able to find much information the supposed exploit.  I only found a few newsgroup posts that didn’t provide any details.


maintains the .  It contains a workaround for various distributions of Linux:

ASE (12.5.x, 15.x) will not run on a system with glibc 2.4.x (that’sFedora Core 5 and later, among others). Here is a work-around, suppliedby “Chris” in sybase.public.ase.linux:

Symptoms of the problem are ASE’s failing to build when you run theinstaller, or “Segmentation Fault” when trying to start an ASEinstance. The Seg Fault happens right after Engine ) is brought onlinein the error log.
If you are running Fedora Core 5 or 6
You will need to set the environment variable LD_POINTER_GUARD to 0, in your sybase .profile, as follows:

export LD_POINTER_GUARD=0  (Fedora, Redhat系列)

Alternatively, just export this from the shell. If you haven’t builtany ASE’s yet, you’ll need to export this before running the installer,otherwise ASE will fail to build. If you are trying to boot an alreadyinstalled ASE, then put it in your .profile / .bash_profile or exportit as an environment variable before starting ASE.
If you are running Ubuntu / Kubuntu “Edgy”
You will need to set the environment variable LD_POINTER_GUARD to 1 in your sybase .profile, as follows:

export LD_POINTER_GUARD=1 (Ubuntu系列,现在似乎可以不要这个参数了)

I googled around a bit trying to find out what the LD_POINTER_GUARDthingie did and ran across a posting / blog where it talked aboutinsome glibc versions it’s backwards … RedHat just made a change Iguess and that’s why you have to set it to “0″ for Fedora and “1″ forUbuntu / Kubuntu / Debian (glibc 2.4). Same info applies if you arebuilding a new ASE.
If you are running Suse 10.1 You will need to set the environment variable LD_POINTER_GUARD to 1 in your sybase .profile, as follows:

export LD_POINTER_GUARD=1 (SuSE系列)

Same discussion as for Ubuntu.
I’ve tried all of the above they all work with the workaround listed.Happy ASE-ing! I’ve tested all of the above distros (sorry it took meso long, was on the road a lot over the last several weeks) and theyallow ASE to boot; the workaround should be valid for ASE 15.x and 12.x(prolly even for 11.x if you wanted to try).

UPDATE: Workaround for all current versions of ASEat


阅读(1531) | 评论(0) | 转发(0) |