【问题标题】:Apache crashes with error R6016 not enough space for thread dataApache 崩溃并出现错误 R6016 not enough space for thread data
【发布时间】:2012-12-17 14:37:38
【问题描述】:

我的应用程序正常运行,但在某些情况下我收到此错误

R6016 not enough space for thread data

所以我现在正在调查为什么会出现此错误。如果我的应用程序在后端引起了这个或什么,我不确定。

这是来自错误的 windows 事件日志的 xml

- <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
- <System>
  <Provider Name="Application Error" /> 
  <EventID Qualifiers="0">1000</EventID> 
  <Level>2</Level> 
  <Task>100</Task> 
  <Keywords>0x80000000000000</Keywords> 
  <TimeCreated SystemTime="2012-12-17T14:03:36.000000000Z" /> 
  <EventRecordID>333483</EventRecordID> 
  <Channel>Application</Channel> 
  <Computer>MY-PC</Computer> 
  <Security /> 
  </System>
- <EventData>
  <Data>apache.exe</Data> 
  <Data>2.2.19.0</Data> 
  <Data>4dd7429b</Data> 
  <Data>ntdll.dll</Data> 
  <Data>6.1.7601.17725</Data> 
  <Data>4ec49b8f</Data> 
  <Data>c0000005</Data> 
  <Data>000343d6</Data> 
  </EventData>

这里还有一个帮助信息

- <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
- <System>
  <Provider Name="Windows Error Reporting" /> 
  <EventID Qualifiers="0">1001</EventID> 
  <Level>4</Level> 
  <Task>0</Task> 
  <Keywords>0x80000000000000</Keywords> 
  <TimeCreated SystemTime="2012-12-17T14:03:45.000000000Z" /> 
  <EventRecordID>333484</EventRecordID> 
  <Channel>Application</Channel> 
  <Computer>MY-PC</Computer> 
  <Security /> 
  </System>
- <EventData>
  <Data>3122334836</Data> 
  <Data>1</Data> 
  <Data>APPCRASH</Data> 
  <Data>Not available</Data> 
  <Data>0</Data> 
  <Data>apache.exe</Data> 
  <Data>2.2.19.0</Data> 
  <Data>4dd7429b</Data> 
  <Data>ntdll.dll</Data> 
  <Data>6.1.7601.17725</Data> 
  <Data>4ec49b8f</Data> 
  <Data>c0000005</Data> 
  <Data>000343d6</Data> 
  <Data /> 
  <Data /> 
  <Data>C:\Users\MyUserName\AppData\Local\Temp\WERA29B.tmp.WERInternalMetadata.xml</Data> 
  <Data>C:\ProgramData\Microsoft\Windows\WER\ReportArchive\AppCrash_SenseWeb.exe_337f61e2ed7abb1fe78d685bd48c832557c6b1_3561c67f</Data> 
  <Data /> 
  <Data>0</Data> 
  <Data>8c82cf18-4852-11e2-a5d0-005056c00008</Data> 
  <Data>0</Data> 
  </EventData>
  </Event>

为什么会这样?我做错了什么?

【问题讨论】:

    标签: php c++ apache apache2


    【解决方案1】:

    有两种可能:

    如果您重复加载和卸载某些 DLL,导致系统耗尽 TLS 条目,则开启。你应该让它加载。

    另一个是如果你一遍又一遍地打电话给TLSAlloc。您应该只需要调用非常少的次数。

    更多信息请参见this knowledge base article

    【讨论】:

    • 我正在加载我的自定义 dll(COM php) 文件,该文件随每个 php 请求一起加载,这可能是导致此错误的原因吗?
    • 当然。如果您的 DLL 分配了一个 TLS 条目,如果您在卸载时不调用 TLSFree,则不断地卸载和重新加载它是致命的。
    • 如何在php中防止这种情况发生?一些方法,功能等......??
    • 要么是 DLL 本身没有调用 TLSFree,要么是某些东西反复加载和卸载 DLL。作为一种解决方法,您可能希望运行一个仅保持 DLL 加载的虚拟脚本。
    • 这不是坏数据,而是资源耗尽。每次使用 DLL 时,您都在调用 TLSAlloc 并分配一个 TLS 插槽。它永远不会被释放。
    猜你喜欢
    • 1970-01-01
    • 2020-07-26
    • 1970-01-01
    • 2013-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-20
    • 1970-01-01
    相关资源
    最近更新 更多