activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Timothy Bish (JIRA)" <j...@apache.org>
Subject [jira] [Resolved] (AMQCPP-529) Crash in Threads due to small stack size (set to 32768 bytes)
Date Thu, 02 Jan 2014 21:11:50 GMT

     [ https://issues.apache.org/jira/browse/AMQCPP-529?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Timothy Bish resolved AMQCPP-529.
---------------------------------

       Resolution: Fixed
    Fix Version/s: 3.9.0
                   3.8.3

Updated the default on 3.8.x to a slightly larger value.  You will still need to use the heap
if your dataset is larger.  On trunk we now stick to sys defaults and let that be tuned by
the user.  Can still be set on user created threads via the Thread class constructor.  

> Crash in Threads due to small stack size (set to 32768 bytes)
> -------------------------------------------------------------
>
>                 Key: AMQCPP-529
>                 URL: https://issues.apache.org/jira/browse/AMQCPP-529
>             Project: ActiveMQ C++ Client
>          Issue Type: Bug
>          Components: Decaf
>    Affects Versions: 3.8.1
>         Environment: linux50
>            Reporter: omri zomet
>            Assignee: Timothy Bish
>            Priority: Critical
>             Fix For: 3.8.3, 3.9.0
>
>
> Using version 3.8.1 of activemq-cpp (after using version 3.4.5) - we have suffered a
crash in code running in amq threads.
> Investigation shows that this happens when trying to use a char[] buffer on stack of
size > 16384 , probably due to the stack size being of size 32768.
> Thread::Thread() constructors call initializeSelf() with stackSize=(-1), which 
> in turn call createThreadInstance() with negative stackSize value (hence using PLATFORM_DEFAULT_STACK_SIZE).
> Relevant code below:
> ----------------------
>  #define PLATFORM_DEFAULT_STACK_SIZE 0x8000
> -----------------------
> void createThreadInstance(ThreadHandle* thread, long long stackSize, int  priority, bool
suspended, threadingTask threadMain, void* threadArg) {
>         if (stackSize <= 0) {
>             stackSize = PLATFORM_DEFAULT_STACK_SIZE;
>         }
> ...
> }
> ----------------------



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

Mime
View raw message