[
https://issues.apache.org/jira/browse/GEODE-2713?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15941221#comment-15941221
]
ASF GitHub Bot commented on GEODE-2713:
---------------------------------------
Github user pivotal-jbarrett commented on a diff in the pull request:
https://github.com/apache/geode-native/pull/74#discussion_r108006539
--- Diff: src/cppcache/src/ThinClientRegion.hpp ---
@@ -407,17 +407,21 @@ class ChunkedFunctionExecutionResponse : public
TcrChunkedResult {
// CacheableVectorPtr m_functionExecutionResults;
bool m_getResult;
ResultCollectorPtr m_rc;
- ACE_Recursive_Thread_Mutex* m_resultCollectorLock;
+ std::shared_ptr<ACE_Recursive_Thread_Mutex> m_resultCollectorLock;
// disabled
ChunkedFunctionExecutionResponse(const
ChunkedFunctionExecutionResponse&);
ChunkedFunctionExecutionResponse& operator=(
const ChunkedFunctionExecutionResponse&);
public:
+ inline ChunkedFunctionExecutionResponse(TcrMessage& msg, bool getResult,
+ ResultCollectorPtr rc)
+ : TcrChunkedResult(), m_msg(msg), m_getResult(getResult), m_rc(rc) {}
+
inline ChunkedFunctionExecutionResponse(
TcrMessage& msg, bool getResult, ResultCollectorPtr rc,
- ACE_Recursive_Thread_Mutex* resultCollectorLock = NULL)
+ std::shared_ptr<ACE_Recursive_Thread_Mutex> resultCollectorLock)
--- End diff --
Same comment about `const &`.
> 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)