This is actually related to
https://issues.jenkins.io/browse/JENKINS-67055
Something in my own plugin has caused the same issue and I'm trying to track down what I'm doing that's affecting the org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition$DescriptorImpl instance.
From what I can see in the source of the dropdownlist jelly file, you're comparing memory address hash with... (from the toString())
selected="${current.descriptor==descriptor || (current==null and descriptor==attrs.default)}"
When I modify that in the jenkins.war to see what's in there I noticed this is what it's seeing. The only difference is the hashcode.
debug var.....: org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition$DescriptorImpl@72d8eb26
debug currDesc: org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition$DescriptorImpl@6904e8d2
I'm at a bit of a loss trying to figure out how I'm affecting this object. Tried looking at the mixing-security-realm-plugin to see what it's doing with no luck either.
One thing I did try is to alter that dropdownlist jelly to:
selected="${current.descriptor.getClass().getName() == descriptor.getClass().getName() || (current==null and descriptor==attrs.default)}" staplerClass="${descriptor.clazz.name}"
lazy="descriptor,it,${capture}">
Works fine. So any ideas where I should look to track down what's going on here?