UsdChecker: Connectable behaviour already registered
When I run the usdChecker tests using the new framework, I am seeing a discrepancy with some of the files
This file passes with the new checker, but failed in the old one. It also now has a Coding Error. It is expected that it no longer fails, but it is odd that it raises this error.
❯ usdchecker --arkit clean/clean_flat.usdc --useNewValidationFramework
Coding Error: in RegisterBehaviorForPrimTypeId at line 454 of ../../pxr/usd/usdShade/connectableAPIBehavior.cpp -- UsdShade Connectable behavior already registered for primTypeId comprised of ';MaterialBindingAPI' type and apischemas.
Validation Result with no explicit variants set
Success!
This is a fresh build of USD 25.2a on macOS 15.4
I don't seem to get this coding error on other paths while using USD beyond the new validation framework in my limited testing.
@dgovil possible for you to share the asset or the structure of the asset? This is interesting because the connectableAPIBehavior registration code has not been touched in a while now.
Sorry, I should have mentioned that this is just using the sample asset in the repo already. Under the usdchecker testenv
It only gets run under the Python bindings right now
Yeah I can repro this coding error.
Yup, there is a race in UsdShadeConnectableAPIBehavior which is getting amplified by the new validation framework running validators in parallel. Good find Dhruv.
Running usdchecker single threaded doesn't show this:
env PXR_WORK_THREAD_LIMIT=1 usdchecker /tmp/clean_flat.usda --useNewValidationFramework
Running command: /dist/sw/pxr/dev-daily/bin/usdchecker /tmp/clean_flat.usda --useNewValidationFramework
##################################################################
# PXR_WORK_THREAD_LIMIT is overridden to '1'. Default is '0'. #
##################################################################
Validation Result with no explicit variants set
Success!