[ 
https://issues.apache.org/jira/browse/GEODE-2713?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15941100#comment-15941100
 ] 

ASF GitHub Bot commented on GEODE-2713:
---------------------------------------

Github user echobravopapa commented on a diff in the pull request:

    https://github.com/apache/geode-native/pull/74#discussion_r107995174
  
    --- Diff: src/cppcache/src/ThinClientRegion.hpp ---
    @@ -416,14 +416,21 @@ class ChunkedFunctionExecutionResponse : public 
TcrChunkedResult {
     
      public:
       inline ChunkedFunctionExecutionResponse(
    -      TcrMessage& msg, bool getResult, ResultCollectorPtr rc,
    -      ACE_Recursive_Thread_Mutex* resultCollectorLock = NULL)
    +      TcrMessage& msg, bool getResult, ResultCollectorPtr rc)
           : TcrChunkedResult(),
             m_msg(msg),
             m_getResult(getResult),
    -        m_rc(rc),
    -        m_resultCollectorLock(resultCollectorLock) {}
    -
    +        m_rc(rc) {}
    +
    +    inline ChunkedFunctionExecutionResponse(
    +                                            TcrMessage& msg, bool 
getResult, ResultCollectorPtr rc,
    +                                            
std::shared_ptr<ACE_Recursive_Thread_Mutex> resultCollectorLock)
    +    : TcrChunkedResult(),
    +    m_msg(msg),
    +    m_getResult(getResult),
    +    m_rc(rc),
    +    m_resultCollectorLock(resultCollectorLock) {}
    +    
    --- End diff --
    
    fun fact: line 433 has dangling white space that the Github diff tool is 
choosing to ignore


> Function execution can lead to passing the address of a stack variable
> ----------------------------------------------------------------------
>
>                 Key: GEODE-2713
>                 URL: https://issues.apache.org/jira/browse/GEODE-2713
>             Project: Geode
>          Issue Type: Bug
>          Components: native client
>            Reporter: Michael Dodge
>
> In ThinClientRegion::executeFunctionSH(), the address of a stack variable 
> (the result collector lock) is passed to the workers. If an exception occurs 
> with any of the workers, the function will return, causing the stack variable 
> to be destructed. Since the workers have the raw address, it is now a 
> dangling pointer situation.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to