-
Couldn't load subscription status.
- Fork 468
chore(profiling): increase ref before stealing #15031
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
|
Bootstrap import analysisComparison of import times between this PR and base. SummaryThe average import time from this PR is: 237 ± 2 ms. The average import time from base is: 239 ± 2 ms. The import time difference between this PR and base is: -2.2 ± 0.1 ms. Import time breakdownThe following import paths have shrunk:
|
Performance SLOsComparing candidate taegyunkim/tuple-incref (9b31172) with baseline main (2d1058c) 📈 Performance Regressions (1 suite)📈 iastaspects - 118/118✅ add_aspectTime: ✅ 0.412µs (SLO: <10.000µs 📉 -95.9%) vs baseline: +2.4% Memory: ✅ 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +4.9% ✅ add_inplace_aspectTime: ✅ 0.407µs (SLO: <10.000µs 📉 -95.9%) vs baseline: +0.4% Memory: ✅ 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +4.9% ✅ add_inplace_noaspectTime: ✅ 0.314µs (SLO: <10.000µs 📉 -96.9%) vs baseline: -0.3% Memory: ✅ 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +5.0% ✅ add_noaspectTime: ✅ 0.274µs (SLO: <10.000µs 📉 -97.3%) vs baseline: -1.5% Memory: ✅ 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +4.9% ✅ bytearray_aspectTime: ✅ 1.493µs (SLO: <10.000µs 📉 -85.1%) vs baseline: +9.8% Memory: ✅ 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +4.9% ✅ bytearray_extend_aspectTime: ✅ 1.514µs (SLO: <10.000µs 📉 -84.9%) vs baseline: -1.3% Memory: ✅ 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.8% ✅ bytearray_extend_noaspectTime: ✅ 0.613µs (SLO: <10.000µs 📉 -93.9%) vs baseline: -0.4% Memory: ✅ 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +4.8% ✅ bytearray_noaspectTime: ✅ 0.482µs (SLO: <10.000µs 📉 -95.2%) vs baseline: -0.8% Memory: ✅ 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.9% ✅ bytes_aspectTime: ✅ 1.297µs (SLO: <10.000µs 📉 -87.0%) vs baseline: +1.1% Memory: ✅ 38.044MB (SLO: <39.000MB -2.5%) vs baseline: +4.8% ✅ bytes_noaspectTime: ✅ 0.494µs (SLO: <10.000µs 📉 -95.1%) vs baseline: +0.2% Memory: ✅ 38.142MB (SLO: <39.000MB -2.2%) vs baseline: +4.9% ✅ bytesio_aspectTime: ✅ 1.354µs (SLO: <10.000µs 📉 -86.5%) vs baseline: +0.8% Memory: ✅ 38.142MB (SLO: <39.000MB -2.2%) vs baseline: +5.2% ✅ bytesio_noaspectTime: ✅ 0.494µs (SLO: <10.000µs 📉 -95.1%) vs baseline: ~same Memory: ✅ 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +4.9% ✅ capitalize_aspectTime: ✅ 0.737µs (SLO: <10.000µs 📉 -92.6%) vs baseline: +0.3% Memory: ✅ 38.122MB (SLO: <39.000MB -2.3%) vs baseline: +4.8% ✅ capitalize_noaspectTime: ✅ 0.432µs (SLO: <10.000µs 📉 -95.7%) vs baseline: -0.8% Memory: ✅ 38.063MB (SLO: <39.000MB -2.4%) vs baseline: +4.8% ✅ casefold_aspectTime: ✅ 0.735µs (SLO: <10.000µs 📉 -92.7%) vs baseline: +0.7% Memory: ✅ 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.9% ✅ casefold_noaspectTime: ✅ 0.365µs (SLO: <10.000µs 📉 -96.3%) vs baseline: -0.9% Memory: ✅ 38.063MB (SLO: <39.000MB -2.4%) vs baseline: +4.7% ✅ decode_aspectTime: ✅ 0.728µs (SLO: <10.000µs 📉 -92.7%) vs baseline: +0.5% Memory: ✅ 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.9% ✅ decode_noaspectTime: ✅ 0.421µs (SLO: <10.000µs 📉 -95.8%) vs baseline: +0.1% Memory: ✅ 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.8% ✅ encode_aspectTime: ✅ 0.708µs (SLO: <10.000µs 📉 -92.9%) vs baseline: -0.8% Memory: ✅ 38.122MB (SLO: <39.000MB -2.3%) vs baseline: +4.8% ✅ encode_noaspectTime: ✅ 0.403µs (SLO: <10.000µs 📉 -96.0%) vs baseline: +0.4% Memory: ✅ 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +4.7% ✅ format_aspectTime: ✅ 3.412µs (SLO: <10.000µs 📉 -65.9%) vs baseline: +0.4% Memory: ✅ 38.122MB (SLO: <39.000MB -2.3%) vs baseline: +5.0% ✅ format_map_aspectTime: ✅ 3.657µs (SLO: <10.000µs 📉 -63.4%) vs baseline: -0.5% Memory: ✅ 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.9% ✅ format_map_noaspectTime: ✅ 0.776µs (SLO: <10.000µs 📉 -92.2%) vs baseline: +0.5% Memory: ✅ 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.7% ✅ format_noaspectTime: ✅ 0.597µs (SLO: <10.000µs 📉 -94.0%) vs baseline: -0.1% Memory: ✅ 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +5.0% ✅ index_aspectTime: ✅ 0.358µs (SLO: <10.000µs 📉 -96.4%) vs baseline: +1.5% Memory: ✅ 38.004MB (SLO: <39.000MB -2.6%) vs baseline: +4.5% ✅ index_noaspectTime: ✅ 0.278µs (SLO: <10.000µs 📉 -97.2%) vs baseline: -0.5% Memory: ✅ 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +4.9% ✅ join_aspectTime: ✅ 1.355µs (SLO: <10.000µs 📉 -86.5%) vs baseline: -0.4% Memory: ✅ 38.044MB (SLO: <39.000MB -2.5%) vs baseline: +4.6% ✅ join_noaspectTime: ✅ 0.491µs (SLO: <10.000µs 📉 -95.1%) vs baseline: -1.2% Memory: ✅ 38.142MB (SLO: <39.000MB -2.2%) vs baseline: +5.0% ✅ ljust_aspectTime: ✅ 2.567µs (SLO: <20.000µs 📉 -87.2%) vs baseline: +0.3% Memory: ✅ 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +4.9% ✅ ljust_noaspectTime: ✅ 0.402µs (SLO: <10.000µs 📉 -96.0%) vs baseline: -0.5% Memory: ✅ 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.7% ✅ lower_aspectTime: ✅ 2.200µs (SLO: <10.000µs 📉 -78.0%) vs baseline: +1.0% Memory: ✅ 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +4.9% ✅ lower_noaspectTime: ✅ 0.368µs (SLO: <10.000µs 📉 -96.3%) vs baseline: -1.9% Memory: ✅ 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +4.9% ✅ lstrip_aspectTime: ✅ 2.239µs (SLO: <20.000µs 📉 -88.8%) vs baseline: +1.4% Memory: ✅ 38.024MB (SLO: <39.000MB -2.5%) vs baseline: +4.7% ✅ lstrip_noaspectTime: ✅ 0.386µs (SLO: <10.000µs 📉 -96.1%) vs baseline: ~same Memory: ✅ 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.9% ✅ modulo_aspectTime: ✅ 0.989µs (SLO: <10.000µs 📉 -90.1%) vs baseline: -0.6% Memory: ✅ 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.8% ✅ modulo_aspect_for_bytearray_bytearrayTime: ✅ 1.555µs (SLO: <10.000µs 📉 -84.5%) vs baseline: -0.5% Memory: ✅ 38.122MB (SLO: <39.000MB -2.3%) vs baseline: +4.9% ✅ modulo_aspect_for_bytesTime: ✅ 0.976µs (SLO: <10.000µs 📉 -90.2%) vs baseline: +0.1% Memory: ✅ 38.122MB (SLO: <39.000MB -2.3%) vs baseline: +4.8% ✅ modulo_aspect_for_bytes_bytearrayTime: ✅ 1.213µs (SLO: <10.000µs 📉 -87.9%) vs baseline: -0.7% Memory: ✅ 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +4.9% ✅ modulo_noaspectTime: ✅ 0.630µs (SLO: <10.000µs 📉 -93.7%) vs baseline: +0.5% Memory: ✅ 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +4.9% ✅ replace_aspectTime: ✅ 5.054µs (SLO: <10.000µs 📉 -49.5%) vs baseline: +1.9% Memory: ✅ 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.9% ✅ replace_noaspectTime: ✅ 0.463µs (SLO: <10.000µs 📉 -95.4%) vs baseline: -0.7% Memory: ✅ 38.122MB (SLO: <39.000MB -2.3%) vs baseline: +4.9% ✅ repr_aspectTime: ✅ 0.907µs (SLO: <10.000µs 📉 -90.9%) vs baseline: -0.2% Memory: ✅ 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +4.8% ✅ repr_noaspectTime: ✅ 0.412µs (SLO: <10.000µs 📉 -95.9%) vs baseline: -1.5% Memory: ✅ 38.122MB (SLO: <39.000MB -2.3%) vs baseline: +5.0% ✅ rstrip_aspectTime: ✅ 1.907µs (SLO: <20.000µs 📉 -90.5%) vs baseline: +0.2% Memory: ✅ 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.9% ✅ rstrip_noaspectTime: ✅ 0.380µs (SLO: <10.000µs 📉 -96.2%) vs baseline: -0.7% Memory: ✅ 38.122MB (SLO: <39.000MB -2.3%) vs baseline: +4.9% ✅ slice_aspectTime: ✅ 0.494µs (SLO: <10.000µs 📉 -95.1%) vs baseline: -0.8% Memory: ✅ 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.9% ✅ slice_noaspectTime: ✅ 0.445µs (SLO: <10.000µs 📉 -95.5%) vs baseline: +0.2% Memory: ✅ 38.122MB (SLO: <39.000MB -2.3%) vs baseline: +5.0% ✅ stringio_aspectTime: ✅ 1.579µs (SLO: <10.000µs 📉 -84.2%) vs baseline: ~same Memory: ✅ 38.122MB (SLO: <39.000MB -2.3%) vs baseline: +5.0% ✅ stringio_noaspectTime: ✅ 0.711µs (SLO: <10.000µs 📉 -92.9%) vs baseline: -1.2% Memory: ✅ 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +5.0% ✅ strip_aspectTime: ✅ 2.504µs (SLO: <20.000µs 📉 -87.5%) vs baseline: 📈 +13.8% Memory: ✅ 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +4.9% ✅ strip_noaspectTime: ✅ 0.385µs (SLO: <10.000µs 📉 -96.2%) vs baseline: -0.6% Memory: ✅ 38.063MB (SLO: <39.000MB -2.4%) vs baseline: +4.9% ✅ swapcase_aspectTime: ✅ 2.398µs (SLO: <10.000µs 📉 -76.0%) vs baseline: +0.2% Memory: ✅ 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.9% ✅ swapcase_noaspectTime: ✅ 0.535µs (SLO: <10.000µs 📉 -94.6%) vs baseline: -0.5% Memory: ✅ 38.122MB (SLO: <39.000MB -2.3%) vs baseline: +4.9% ✅ title_aspectTime: ✅ 2.316µs (SLO: <10.000µs 📉 -76.8%) vs baseline: +0.7% Memory: ✅ 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +4.7% ✅ title_noaspectTime: ✅ 0.506µs (SLO: <10.000µs 📉 -94.9%) vs baseline: +1.8% Memory: ✅ 38.063MB (SLO: <39.000MB -2.4%) vs baseline: +4.7% ✅ translate_aspectTime: ✅ 3.259µs (SLO: <10.000µs 📉 -67.4%) vs baseline: +0.5% Memory: ✅ 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +4.8% ✅ translate_noaspectTime: ✅ 1.040µs (SLO: <10.000µs 📉 -89.6%) vs baseline: -0.3% Memory: ✅ 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.8% ✅ upper_aspectTime: ✅ 2.179µs (SLO: <10.000µs 📉 -78.2%) vs baseline: -0.5% Memory: ✅ 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +4.9% ✅ upper_noaspectTime: ✅ 0.367µs (SLO: <10.000µs 📉 -96.3%) vs baseline: -1.9% Memory: ✅ 38.063MB (SLO: <39.000MB -2.4%) vs baseline: +4.6% 🟡 Near SLO Breach (6 suites)🟡 djangosimple - 30/30✅ appsecTime: ✅ 20.491ms (SLO: <22.300ms -8.1%) vs baseline: ~same Memory: ✅ 66.473MB (SLO: <67.000MB 🟡 -0.8%) vs baseline: +4.9% ✅ exception-replay-enabledTime: ✅ 1.342ms (SLO: <1.450ms -7.4%) vs baseline: -0.2% Memory: ✅ 64.669MB (SLO: <67.000MB -3.5%) vs baseline: +4.8% ✅ iastTime: ✅ 20.529ms (SLO: <22.250ms -7.7%) vs baseline: +0.3% Memory: ✅ 66.445MB (SLO: <67.000MB 🟡 -0.8%) vs baseline: +4.8% ✅ profilerTime: ✅ 15.535ms (SLO: <16.550ms -6.1%) vs baseline: +0.4% Memory: ✅ 54.084MB (SLO: <54.500MB 🟡 -0.8%) vs baseline: +4.8% ✅ resource-renamingTime: ✅ 20.541ms (SLO: <21.750ms -5.6%) vs baseline: -0.2% Memory: ✅ 66.465MB (SLO: <67.000MB 🟡 -0.8%) vs baseline: +4.9% ✅ span-code-originTime: ✅ 25.139ms (SLO: <28.200ms 📉 -10.9%) vs baseline: -1.2% Memory: ✅ 67.625MB (SLO: <69.500MB -2.7%) vs baseline: +5.0% ✅ tracerTime: ✅ 20.459ms (SLO: <21.750ms -5.9%) vs baseline: -0.1% Memory: ✅ 66.426MB (SLO: <67.000MB 🟡 -0.9%) vs baseline: +4.9% ✅ tracer-and-profilerTime: ✅ 22.684ms (SLO: <23.500ms -3.5%) vs baseline: ~same Memory: ✅ 67.881MB (SLO: <68.000MB 🟡 -0.2%) vs baseline: +4.8% ✅ tracer-dont-create-db-spansTime: ✅ 19.348ms (SLO: <21.500ms 📉 -10.0%) vs baseline: -0.2% Memory: ✅ 66.352MB (SLO: <67.000MB 🟡 -1.0%) vs baseline: +4.7% ✅ tracer-minimalTime: ✅ 16.586ms (SLO: <17.500ms -5.2%) vs baseline: ~same Memory: ✅ 66.432MB (SLO: <67.000MB 🟡 -0.8%) vs baseline: +4.9% ✅ tracer-nativeTime: ✅ 20.503ms (SLO: <21.750ms -5.7%) vs baseline: ~same Memory: ✅ 72.210MB (SLO: <72.500MB 🟡 -0.4%) vs baseline: +4.9% ✅ tracer-no-cachesTime: ✅ 18.493ms (SLO: <19.650ms -5.9%) vs baseline: ~same Memory: ✅ 66.407MB (SLO: <67.000MB 🟡 -0.9%) vs baseline: +4.8% ✅ tracer-no-databasesTime: ✅ 18.779ms (SLO: <20.100ms -6.6%) vs baseline: +0.1% Memory: ✅ 66.511MB (SLO: <67.000MB 🟡 -0.7%) vs baseline: +4.9% ✅ tracer-no-middlewareTime: ✅ 20.206ms (SLO: <21.500ms -6.0%) vs baseline: ~same Memory: ✅ 66.444MB (SLO: <67.000MB 🟡 -0.8%) vs baseline: +4.8% ✅ tracer-no-templatesTime: ✅ 20.267ms (SLO: <22.000ms -7.9%) vs baseline: -0.4% Memory: ✅ 66.433MB (SLO: <67.000MB 🟡 -0.8%) vs baseline: +4.8% 🟡 errortrackingdjangosimple - 6/6✅ errortracking-enabled-allTime: ✅ 18.163ms (SLO: <19.850ms -8.5%) vs baseline: +0.9% Memory: ✅ 66.391MB (SLO: <66.500MB 🟡 -0.2%) vs baseline: +4.8% ✅ errortracking-enabled-userTime: ✅ 18.125ms (SLO: <19.400ms -6.6%) vs baseline: +0.4% Memory: ✅ 66.408MB (SLO: <66.500MB 🟡 -0.1%) vs baseline: +4.8% ✅ tracer-enabledTime: ✅ 18.163ms (SLO: <19.450ms -6.6%) vs baseline: +0.5% Memory: ✅ 66.357MB (SLO: <66.500MB 🟡 -0.2%) vs baseline: +4.8% 🟡 errortrackingflasksqli - 6/6✅ errortracking-enabled-allTime: ✅ 2.070ms (SLO: <2.300ms -10.0%) vs baseline: +0.2% Memory: ✅ 52.770MB (SLO: <53.500MB 🟡 -1.4%) vs baseline: +4.6% ✅ errortracking-enabled-userTime: ✅ 2.074ms (SLO: <2.250ms -7.8%) vs baseline: +0.2% Memory: ✅ 52.848MB (SLO: <53.500MB 🟡 -1.2%) vs baseline: +4.6% ✅ tracer-enabledTime: ✅ 2.071ms (SLO: <2.300ms -9.9%) vs baseline: +0.1% Memory: ✅ 52.789MB (SLO: <53.500MB 🟡 -1.3%) vs baseline: +4.6% 🟡 flasksimple - 18/18✅ appsec-getTime: ✅ 4.594ms (SLO: <4.750ms -3.3%) vs baseline: -0.3% Memory: ✅ 62.738MB (SLO: <65.000MB -3.5%) vs baseline: +4.9% ✅ appsec-postTime: ✅ 6.618ms (SLO: <6.750ms 🟡 -2.0%) vs baseline: -0.3% Memory: ✅ 62.797MB (SLO: <65.000MB -3.4%) vs baseline: +4.8% ✅ appsec-telemetryTime: ✅ 4.582ms (SLO: <4.750ms -3.5%) vs baseline: -0.7% Memory: ✅ 62.718MB (SLO: <65.000MB -3.5%) vs baseline: +4.8% ✅ debuggerTime: ✅ 1.857ms (SLO: <2.000ms -7.2%) vs baseline: +0.1% Memory: ✅ 45.338MB (SLO: <47.000MB -3.5%) vs baseline: +4.6% ✅ iast-getTime: ✅ 1.860ms (SLO: <2.000ms -7.0%) vs baseline: ~same Memory: ✅ 42.349MB (SLO: <49.000MB 📉 -13.6%) vs baseline: +4.8% ✅ profilerTime: ✅ 1.914ms (SLO: <2.100ms -8.8%) vs baseline: +0.1% Memory: ✅ 46.439MB (SLO: <47.000MB 🟡 -1.2%) vs baseline: +4.0% ✅ resource-renamingTime: ✅ 3.369ms (SLO: <3.650ms -7.7%) vs baseline: -0.3% Memory: ✅ 53.045MB (SLO: <53.500MB 🟡 -0.9%) vs baseline: +5.0% ✅ tracerTime: ✅ 3.360ms (SLO: <3.650ms -7.9%) vs baseline: +0.1% Memory: ✅ 53.045MB (SLO: <53.500MB 🟡 -0.9%) vs baseline: +4.9% ✅ tracer-nativeTime: ✅ 3.360ms (SLO: <3.650ms -7.9%) vs baseline: ~same Memory: ✅ 59.078MB (SLO: <60.000MB 🟡 -1.5%) vs baseline: +5.3% 🟡 flasksqli - 6/6✅ appsec-enabledTime: ✅ 3.974ms (SLO: <4.200ms -5.4%) vs baseline: -0.3% Memory: ✅ 62.993MB (SLO: <66.000MB -4.6%) vs baseline: +5.0% ✅ iast-enabledTime: ✅ 2.445ms (SLO: <2.800ms 📉 -12.7%) vs baseline: -0.3% Memory: ✅ 59.513MB (SLO: <60.000MB 🟡 -0.8%) vs baseline: +4.9% ✅ tracer-enabledTime: ✅ 2.069ms (SLO: <2.250ms -8.1%) vs baseline: -0.3% Memory: ✅ 52.947MB (SLO: <54.500MB -2.9%) vs baseline: +4.7% 🟡 packagespackageforrootmodulemapping - 4/4✅ cache_offTime: ✅ 347.407ms (SLO: <354.300ms 🟡 -1.9%) vs baseline: +0.9% Memory: ✅ 38.471MB (SLO: <40.000MB -3.8%) vs baseline: +7.5% ✅ cache_onTime: ✅ 0.385µs (SLO: <10.000µs 📉 -96.2%) vs baseline: +0.6% Memory: ✅ 36.994MB (SLO: <39.000MB -5.1%) vs baseline: +6.4%
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As discussed on Slack/in person, it's not clear to me if this will fix crashes but it makes sense to me to write the code this way regardless. If it does fix crashes, that'd be very interesting!
|
Thanks for reviewing!
Yeah after reading the CPython docs, I gained more confidence that it should have been written this way from the beginning. Especially, this
|
## Description Noticed this while looking into crashes related to the memory profiler. [See notebook here](https://app.datadoghq.com/notebook/13359436/memory-profiler-crashes). We are not sure whether this would be root cause of such crashes, but still think it's 'logically' correct to increment the reference before calling `PyTuple_SET_ITEM()`. When you call `PyTuple_SET_ITEM(p, pos, obj);`, then the ownership of the object `o` is transferred to the tuple. - https://docs.python.org/3/c-api/tuple.html#c.PyTuple_SET_ITEM - https://docs.python.org/3/c-api/intro.html#reference-count-details > Stealing a reference means that when you pass a reference to a function, that function assumes that it now owns that reference, and you are not responsible for it any longer > When you want to keep using an object although the reference to it will be stolen, use [Py_INCREF()](https://docs.python.org/3/c-api/refcounting.html#c.Py_INCREF) to grab another reference before calling the reference-stealing function. <!-- Provide an overview of the change and motivation for the change --> ## Testing <!-- Describe your testing strategy or note what tests are included --> ## Risks <!-- Note any risks associated with this change, or "None" if no risks --> ## Additional Notes <!-- Any other information that would be helpful for reviewers -->
Description
Noticed this while looking into crashes related to the memory profiler. See notebook here. We are not sure whether this would be root cause of such crashes, but still think it's 'logically' correct to increment the reference before calling
PyTuple_SET_ITEM().When you call
PyTuple_SET_ITEM(p, pos, obj);, then the ownership of the objectois transferred to the tuple.Testing
Risks
Additional Notes