Rational Rose 2003安装时发生SmartHeap Library的MEM_BAD_POINTER错误

Installing Windows XP Service Pack 2 may result in SmartHeap error messages.

Installing XP Service Pack 2 may cause SmartHeap to report "MEM_BAD_POINTER" errors in a message box on the Desktop, even though there was no such problem previously. We have confirmed that this problem is likely to occur under the following conditions:

1) one or both of the boxes on the Languages tab of Control Panel/Regional and Language Options is checked (these boxes install support for East Asian languages and complex script/right-to-left languages).

2) Service Pack 2 for XP is installed.

3) the user launches an application linked to one of the SmartHeap runtime dynamic libraries (shdw32m.lib or shdw32mt.lib). All versions of runtime non-smp SmartHeap are affected, but it appears that the problem does not occur if debug SmartHeap or any SmartHeap static lib are used. SmartHeap/SMP users note: The problem probably occurs when the app links to the runtime SmartHeap/SMP dynamic lib shdsmpmt.lib, but since runtime SmartHeap/SMP ignores heap errors, and since the bug appears to be benign, the user is never aware that there's a problem.

The affected app will run normally, then issue a MEM_BAD_POINTER error at app termination.

This appears to be a bug in Service Pack 2, and we have contacted Microsoft. We will update the status of this issue on our support page (http://www.microquill.com/support.html) when new information is available..

What MicroQuill is doing about this problem?

  • We have contacted Microsoft multiple times. No word yet on when a fix might be available.
  • As of 11/09/04 we have available a SmartHeap shw32.dll which checks to see if a MEM_BAD_POINTER error is due to this service pack 2 bug. If it is, then by default SmartHeap will not report the error to the desktop. Note that this is not a true fix: a fix is beyond are capability, since the problem is in a Microsoft DLL. But in most cases the error is benign, so if the error message is suppressed, users won't be aware of it.
    Send an email to sp2@microquill.com if you want to receive one of these modified SmartHeap DLLs.

What can you do about this problem? Some options:

  • Contact Microsoft and complain. Most likely they will reflexively explain that it's a MicroQuill problem. Please emphasize that this is a Microsoft bug in the usp10.dll that ships with Service Pack 2. Tell them to contact us (email support@microquill.com) for more info.
  • You could delay installing Service Pack 2 until this issue is resolved.
  • If you've installed SP2 and are seeing this problem, and if you don't need support for East Asian languages, right-to-left languages, etc, uncheck the box(es) in the Regional and Language Options applet and follow the instruction for uninstalling (a reboot may be required).
  • As of 11/9/04, you can install our DLL that suppresses the error report (see above).
  • Programmers who have access to source code of the affected app and want a temporary workaround can make the following call before the app terminates:

    #include "smrtheap.h"
    MemSetErrorHandler(NULL);


    This won't fix the error, but it will suppress error reporting. Contact MicroQuill tech support ( support@microquill.com) if you have any questions.

Many thanks to Serge Lalonde at Infolytica (http://www.infolytica.com/) for his quick reporting of this problem, and for fingering the 'East Asian languages' option as one of the conditions.

 

我是从以下地址搜索到的:
http://www.rational-club.org/index.php?s=85da064ceffa922ca819b033d2f7effd&showtopic=583&pid=2265&st=0&#entry2265
原文地址:
http://www.microquill.com/kb/xpsp2.htm

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值