<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 05:41:28 UTC 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary append 'field=key&field=summary' to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>MongoDB Jira</title>
    <link>https://jira.mongodb.org</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>9.7.1</version>
        <build-number>970001</build-number>
        <build-date>13-04-2023</build-date>
    </build-info>


<item>
            <title>[SERVER-57290] Shutting down SingleServerDiscoveryMonitor can lead to a nullptr dereference</title>
                <link>https://jira.mongodb.org/browse/SERVER-57290</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;&lt;a href=&quot;https://github.com/mongodb/mongo/blob/8d5547cdd6c45dd68c95dcf353e459e62da5222b/src/mongo/client/server_discovery_monitor.cpp#L374&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;SingleServerDiscoveryMonitor::&amp;#95;executor is reset as part of SingleServerDiscoveryMonitor::shutdown()&lt;/a&gt; but &lt;a href=&quot;https://github.com/mongodb/mongo/blob/8d5547cdd6c45dd68c95dcf353e459e62da5222b/src/mongo/client/server_discovery_monitor.cpp#L280&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;may still be referenced by a task running on the task executor&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;It looks like &lt;a href=&quot;https://github.com/mongodb/mongo/blob/8d5547cdd6c45dd68c95dcf353e459e62da5222b/src/mongo/client/server_discovery_monitor.cpp#L328&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;a similiar issue&lt;/a&gt; also affects the non&amp;#45;streamable version of the SingleServerDiscoveryMonitor (&amp;#45;&amp;#45;setParameter replicaSetMonitorProtocol=sdam).&lt;/p&gt;</description>
                <environment></environment>
        <key id="1761183">SERVER-57290</key>
            <summary>Shutting down SingleServerDiscoveryMonitor can lead to a nullptr dereference</summary>
                <type id="1" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14703&amp;avatarType=issuetype">Bug</type>
                                            <priority id="3" iconUrl="https://jira.mongodb.org/images/icons/priorities/major.svg">Major - P3</priority>
                        <status id="6" iconUrl="https://jira.mongodb.org/images/icons/statuses/closed.png" description="The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.">Closed</status>
                    <statusCategory id="3" key="done" colorName="success"/>
                                    <resolution id="13201">Fixed</resolution>
                                        <assignee username="haley.connelly@mongodb.com">Haley Connelly</assignee>
                                    <reporter username="max.hirschhorn@mongodb.com">Max Hirschhorn</reporter>
                        <labels>
                            <label>sharding-wfbf-day</label>
                    </labels>
                <created>Fri, 28 May 2021 17:42:13 +0000</created>
                <updated>Sun, 29 Oct 2023 21:52:56 +0000</updated>
                            <resolved>Tue, 29 Jun 2021 18:33:17 +0000</resolved>
                                                    <fixVersion>5.1.0-rc0</fixVersion>
                                    <component>Sharding</component>
                                        <votes>0</votes>
                                    <watches>2</watches>
                                                                                                                <comments>
                            <comment id="4107054" author="JIRAUSER1259052" created="Wed, 6 Oct 2021 18:16:11 +0000"  >&lt;p&gt;Updating the fixversion since branching activities occurred yesterday. This ticket will be in rc0 when it&#8217;s been triggered. For more active release information, please keep an eye on #server-release. Thank you!&lt;/p&gt;</comment>
                            <comment id="3902354" author="xgen-internal-githook" created="Fri, 25 Jun 2021 22:35:16 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Haley Connelly&apos;, &apos;email&apos;: &apos;haley.connelly@mongodb.com&apos;, &apos;username&apos;: &apos;haleyConnelly&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-57290&quot; title=&quot;Shutting down SingleServerDiscoveryMonitor can lead to a nullptr dereference&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-57290&quot;&gt;&lt;del&gt;SERVER-57290&lt;/del&gt;&lt;/a&gt; Prevent nullptr dereference when SingleServerDiscoveryMonitor is shutting down&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/93a3c12fb7bf3bbd6689c4728c27cc3cb12eb98a&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/93a3c12fb7bf3bbd6689c4728c27cc3cb12eb98a&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="3848399" author="lamont.nelson" created="Fri, 28 May 2021 19:37:11 +0000"  >&lt;p&gt;I think the fix for this is to just not null the executor pointer. We check if the instance is shutdown already, which should cause the callbacks to exit. Once they all exit the instance will be destroyed.&lt;/p&gt;</comment>
                            <comment id="3848223" author="lamont.nelson" created="Fri, 28 May 2021 18:00:15 +0000"  >&lt;p&gt;In general, the state of those classes should be protected by the mutex. We shouldn&apos;t need to call the shutdown method of the executor at all. I think we might be able to remove setting the executor to nullptr without consequence. It will not change after it&apos;s passed it to the constructor.&lt;/p&gt;

&lt;p&gt;The linked examples are called under the mutex here: &lt;a href=&quot;https://github.com/mongodb/mongo/blob/8d5547cdd6c45dd68c95dcf353e459e62da5222b/src/mongo/client/server_discovery_monitor.cpp#L212&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/blob/8d5547cdd6c45dd68c95dcf353e459e62da5222b/src/mongo/client/server_discovery_monitor.cpp#L212&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The executor&apos;s lifetime is governed by the ReplicaSetMonitorManager, which should outlive any instance of the RSM: &lt;a href=&quot;https://github.com/mongodb/mongo/blob/605f0cc7bbbc9bce090e3316e3db22ec043e64af/src/mongo/client/replica_set_monitor_manager.cpp#L82&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;created&lt;/a&gt; / &lt;a href=&quot;https://github.com/mongodb/mongo/blob/605f0cc7bbbc9bce090e3316e3db22ec043e64af/src/mongo/client/replica_set_monitor_manager.cpp#L173&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;shutdown&lt;/a&gt;&lt;/p&gt;
</comment>
                            <comment id="3848192" author="max.hirschhorn@10gen.com" created="Fri, 28 May 2021 17:44:32 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=lamont.nelson&quot; class=&quot;user-hover&quot; rel=&quot;lamont.nelson&quot;&gt;lamont.nelson&lt;/a&gt;, what exactly are the synchronization rules for accessing SingleServerDiscoveryMonitor::&amp;#95;executor? I see SingleServerDiscoveryMonitor::&amp;#95;executor is reset while holding SingleServerDiscoveryMonitor::&amp;#95;mutex but &lt;a href=&quot;https://github.com/mongodb/mongo/blob/8d5547cdd6c45dd68c95dcf353e459e62da5222b/src/mongo/client/server_discovery_monitor.cpp#L253&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;not&lt;/a&gt; &lt;a href=&quot;https://github.com/mongodb/mongo/blob/8d5547cdd6c45dd68c95dcf353e459e62da5222b/src/mongo/client/server_discovery_monitor.cpp#L309&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;every&lt;/a&gt; access of &amp;#95;executor is done while holding the mutex.&lt;/p&gt;

&lt;p&gt;I&apos;m back to wondering if the fix here should be to explicitly call &amp;#95;executor&amp;#45;&amp;gt;shutdown() instead of resetting &amp;#95;executor. It also seems deadlock prone to me that &lt;a href=&quot;https://github.com/mongodb/mongo/blob/8d5547cdd6c45dd68c95dcf353e459e62da5222b/src/mongo/executor/thread_pool_task_executor.cpp#L143-L144&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;we implicitly call &amp;#95;executor&amp;#45;&amp;gt;&amp;#95;join()&lt;/a&gt; while holding SingleServerDiscoveryMonitor::&amp;#95;mutex. (I&apos;m assuming nothing else is keeping the reference alive.)&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Depends</name>
                                                                <inwardlinks description="is depended on by">
                                                        </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                <customfield id="customfield_10050" key="com.atlassian.jira.toolkit:comments">
                        <customfieldname># Replies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>5.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_18555" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname># of Sprints</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1.0</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_10011" key="com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons">
                        <customfieldname>Backwards Compatibility</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10038"><![CDATA[Fully Compatible]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_10055" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>Date of 1st Reply</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Fri, 28 May 2021 18:00:15 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        2 years, 18 weeks ago
    
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_18254" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Dependencies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue><![CDATA[]]></customfieldvalue>


                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_15850" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                        <customfield id="customfield_17050" key="com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons">
                        <customfieldname>Downstream Team Attention</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="16941"><![CDATA[Not Needed]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_10057" key="com.atlassian.jira.toolkit:lastusercommented">
                        <customfieldname>Last comment by Customer</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>true</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10056" key="com.atlassian.jira.toolkit:lastupdaterorcommenter">
                        <customfieldname>Last commenter</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>luke.bonanomi@mongodb.com</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_11151" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            2 years, 18 weeks ago
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_16465" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Linked BF Score</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>12.0</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                        <customfield id="customfield_10032" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Operating System</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10026"><![CDATA[ALL]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>xgen-internal-githook</customfieldvalue>
            <customfieldvalue>haley.connelly@mongodb.com</customfieldvalue>
            <customfieldvalue>lamont.nelson@mongodb.com</customfieldvalue>
            <customfieldvalue>max.hirschhorn@mongodb.com</customfieldvalue>
            <customfieldvalue>vivian.ge@mongodb.com</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hzifv3:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hz339r:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10558" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>9223372036854775807</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_23361" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Requested By</customfieldname>
                        <customfieldvalues>
                                

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_10557" key="com.pyxis.greenhopper.jira:gh-sprint">
                        <customfieldname>Sprint</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue id="4520">Sharding 2021-06-28</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10053" key="com.atlassian.jira.ext.charting:timeinstatus">
                        <customfieldname>Time In Status</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_22870" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Triagers</customfieldname>
                        <customfieldvalues>
                                

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_14350" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>serverRank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hzi247:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                    </customfields>
    </item>
</channel>
</rss>