Make sure size_test CI uses -Wall -Werror - #8016

Merged
mergennachin merged 1 commit into
mainfrom
wall
Feb 11, 2025
Merged

Make sure size_test CI uses -Wall -Werror#8016
mergennachin merged 1 commit into
mainfrom
wall

Conversation

@mergennachin

@mergennachinmergennachin commented Jan 28, 2025

Copy link
Copy Markdown
Contributor

I am not changing the default compilation option for all of ExecuTorch. I'm only changing the compile option for size_test and size_test_all_ops tests.

We don't run size_test for Windows, at least for today

Test Plan:

Run sh test/build_size_test.sh
Add op_fill.cpp with this patch at the end of the file.

int x;
printf("%d", x); // x is uninitialized

Make sure the compilation fails, https://gist.github.com/mergennachin/25b78c63069b9e9b2203e66f94b1a0be

Make sure the compilation succeeds without the "-Wall -Werror" flags.

@pytorch-bot

pytorch-botBot commented Jan 28, 2025

Copy link
Copy Markdown

🔗 Helpful Links

🧪 See artifacts and rendered test results at hud.pytorch.org/pr/pytorch/executorch/8016

Note: Links to docs will display an error until the docs builds have been completed.

This comment was automatically generated by Dr. CI and updates every 15 minutes.

@facebook-github-botfacebook-github-bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label Jan 28, 2025
@mergennachin

Copy link
Copy Markdown
ContributorAuthor

Continuing where I left off: #7940

Not changing CMakeLists.txt this time.

@swolchokswolchok left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

love it

@swolchok

Copy link
Copy Markdown
Contributor

I don't see size_test in the CI jobs?

@mergennachin

mergennachin commented Jan 29, 2025

Copy link
Copy Markdown
ContributorAuthor

I don't see size_test in the CI jobs?

Just rebased (which contain CI fixes)

size_test for clang12 passed, but not for gcc9

https://github.com/pytorch/executorch/actions/runs/13022554836/job/36326025227?pr=8016

Comment threadruntime/kernel/operator_registry.cpp Outdated
return;
}
strncpy(buf, "v1/", 3);
strcpy(buf, "v1/");

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/pytorch/executorch/runtime/kernel/operator_registry.cpp:187:3: note: in expansion of macro 'ET_LOG_TENSOR_META'
187 | ET_LOG_TENSOR_META(meta_list);
| ^~~~~~~~~~~~~~~~~~
In file included from /usr/include/string.h:535,
from /usr/include/c++/9/cstring:42,
from /pytorch/executorch/../executorch/runtime/kernel/operator_registry.h:11,
from /pytorch/executorch/runtime/kernel/operator_registry.cpp:9:
In function 'char* strncpy(char*, const char*, size_t)',
inlined from 'void executorch::runtime::internal::make_kernel_key_string(executorch::runtime::Span<const executorch::runtime::TensorMeta>, char*)' at /pytorch/executorch/runtime/kernel/operator_registry.cpp:138:10:
/usr/include/x86_64-linux-gnu/bits/string_fortified.h:95:34: error: 'char* __builtin_strncpy(char*, const char*, long unsigned int)' output truncated before terminating nul copying 3 bytes from a string of the same length [-Werror=stringop-truncation]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the warning here was unhelpful IMO

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this just be memcpy(buf, "v1/", 3);? Or are we relying on the NUL byte that strcpy adds?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I completely rewrote this function in #8327, so watch out for merge conflicts (if mine lands first)

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yeah, thanks for the heads up, will be careful during rebase

@mergennachin

Copy link
Copy Markdown
ContributorAuthor
  • Ignore 'sign-compare' but created a follow-up issue Compile with -Wsign-compare flag #8149
  • Fixed an error that was erroring with -Werror=stringop-truncation
  • Modified the CONTRIBUTION.md file to build the size_test information

@facebook-github-bot

Copy link
Copy Markdown
Contributor

@mergennachin has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator.

@facebook-github-bot

Copy link
Copy Markdown
Contributor

@mergennachin has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator.

ET_SWITCH_SCALAR_OBJ_TYPES(val_type, ctx, name, CTYPE_VAL, [&] {
CTYPE_VAL val;
utils::extract_scalar(fill_value, &val);
ET_KERNEL_CHECK(

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think ET_KERNEL_CHECK will do the right thing in a lambda -- it returns from the lambda, not the operator

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

any suggestions on how to fix?

i think it's fine, since it will return void from the lambda, but sets context to be fail, with error code InvalidArgument.

ET_SWITCH_SCALAR_OBJ_TYPES(val_type, ctx, name, CTYPE_VAL, [&] {
CTYPE_VAL val;
utils::extract_scalar(fill_value, &val);
ET_KERNEL_CHECK(

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think ET_KERNEL_CHECK will do the right thing in a lambda -- it returns from the lambda, not the operator

Comment threadruntime/kernel/operator_registry.cpp Outdated
return;
}
strncpy(buf, "v1/", 3);
strcpy(buf, "v1/");

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the warning here was unhelpful IMO

Comment threadtest/build_size_test.sh Outdated
# shellcheck source=/dev/null
source "$(dirname "${BASH_SOURCE[0]}")/../.ci/scripts/utils.sh"

# Remove -Wno-sign-compare (https://github.com/pytorch/executorch/issues/8149)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

did you mean to put a TODO here?

@swolchok

Copy link
Copy Markdown
Contributor

@mergennachin do you need anything else from me on this one?

@mergennachin

mergennachin commented Feb 10, 2025

Copy link
Copy Markdown
ContributorAuthor

@mergennachin do you need anything else from me on this one?

@swolchok, @dbort

i don't think we have come to a resolution on errors on boolean errors:

https://github.com/pytorch/executorch/actions/runs/13123890485/job/36616081625?pr=8016

i can specialize for boolean cases, and use &&=

@swolchok

Copy link
Copy Markdown
Contributor

&&= does not exist; you'd need &=. IMO such a change would be clear uglification of the code only to suppress a warning

@mergennachin

Copy link
Copy Markdown
ContributorAuthor

such a change would be clear uglification of the code only to suppress a warning

But it's a legitimate warning, no? You can today pass in a random memory location and define it as "boolean" tensor, which will cause some undefined behavior.

unless you pass in UBSAN flag

@swolchok

swolchok commented Feb 10, 2025

Copy link
Copy Markdown
Contributor

I don't think the code change you are considering would address the issue you just raised above.

@mergennachin

Copy link
Copy Markdown
ContributorAuthor

Okay, I will suppress that error for now and create a follow-up issue to track it

@mergennachin
mergennachinforce-pushed the wall branch 3 times, most recently from 8b9425b to 0c82c8bCompareFebruary 11, 2025 01:32
@mergennachin
mergennachin marked this pull request as ready for review February 11, 2025 01:40
Comment threadCONTRIBUTING.md Outdated
Comment threadCONTRIBUTING.md Outdated
Comment threadtest/build_size_test.sh Outdated
@facebook-github-bot

Copy link
Copy Markdown
Contributor

@mergennachin has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator.

@mergennachin
mergennachin merged commit 4e6abf8 into mainFeb 11, 2025
@mergennachin
mergennachin deleted the wall branch February 11, 2025 02:31
b_shape_str.data());
tensor_shape_to_c_string(a_size_span).data(),
tensor_shape_to_c_string(b_size_span).data());
#endif

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

@swolchok

Copy link
Copy Markdown
Contributor

@mergennachin it seems suboptimal for us to enforce -Wall -Werror, but only in a CI job that runs only on trunk, as this will result in unnecessarily-delayed detection of broken trunk. could we perhaps have a pull-time CI job that builds with these flags?

@swolchok

Copy link
Copy Markdown
Contributor

e.g. #8314 promptly broke this on trunk because of -Werror

@mergennachin

Copy link
Copy Markdown
ContributorAuthor

@swolchok test-binary-size is a pull job

perhaps, in this #8314 case your base commit was old and it didn't catch during PR?

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ciflow/trunkCLA SignedThis label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed.topic: not user facing

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@mergennachin@swolchok@facebook-github-bot@digantdesai@dbort
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Make sure size_test CI uses -Wall -Werror - #8016

Merged
mergennachin merged 1 commit into
mainfrom
wall
Feb 11, 2025
Merged

Make sure size_test CI uses -Wall -Werror#8016
mergennachin merged 1 commit into
mainfrom
wall

Conversation

@mergennachin

@mergennachinmergennachin commented Jan 28, 2025

Copy link
Copy Markdown
Contributor

I am not changing the default compilation option for all of ExecuTorch. I'm only changing the compile option for size_test and size_test_all_ops tests.

We don't run size_test for Windows, at least for today

Test Plan:

Run sh test/build_size_test.sh
Add op_fill.cpp with this patch at the end of the file.

int x;
printf("%d", x); // x is uninitialized

Make sure the compilation fails, https://gist.github.com/mergennachin/25b78c63069b9e9b2203e66f94b1a0be

Make sure the compilation succeeds without the "-Wall -Werror" flags.

@pytorch-bot

pytorch-botBot commented Jan 28, 2025

Copy link
Copy Markdown

🔗 Helpful Links

🧪 See artifacts and rendered test results at hud.pytorch.org/pr/pytorch/executorch/8016

Note: Links to docs will display an error until the docs builds have been completed.

This comment was automatically generated by Dr. CI and updates every 15 minutes.

@facebook-github-botfacebook-github-bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label Jan 28, 2025
@mergennachin

Copy link
Copy Markdown
ContributorAuthor

Continuing where I left off: #7940

Not changing CMakeLists.txt this time.

@swolchokswolchok left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

love it

@swolchok

Copy link
Copy Markdown
Contributor

I don't see size_test in the CI jobs?

@mergennachin

mergennachin commented Jan 29, 2025

Copy link
Copy Markdown
ContributorAuthor

I don't see size_test in the CI jobs?

Just rebased (which contain CI fixes)

size_test for clang12 passed, but not for gcc9

https://github.com/pytorch/executorch/actions/runs/13022554836/job/36326025227?pr=8016

Comment threadruntime/kernel/operator_registry.cpp Outdated
return;
}
strncpy(buf, "v1/", 3);
strcpy(buf, "v1/");

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/pytorch/executorch/runtime/kernel/operator_registry.cpp:187:3: note: in expansion of macro 'ET_LOG_TENSOR_META'
187 | ET_LOG_TENSOR_META(meta_list);
| ^~~~~~~~~~~~~~~~~~
In file included from /usr/include/string.h:535,
from /usr/include/c++/9/cstring:42,
from /pytorch/executorch/../executorch/runtime/kernel/operator_registry.h:11,
from /pytorch/executorch/runtime/kernel/operator_registry.cpp:9:
In function 'char* strncpy(char*, const char*, size_t)',
inlined from 'void executorch::runtime::internal::make_kernel_key_string(executorch::runtime::Span<const executorch::runtime::TensorMeta>, char*)' at /pytorch/executorch/runtime/kernel/operator_registry.cpp:138:10:
/usr/include/x86_64-linux-gnu/bits/string_fortified.h:95:34: error: 'char* __builtin_strncpy(char*, const char*, long unsigned int)' output truncated before terminating nul copying 3 bytes from a string of the same length [-Werror=stringop-truncation]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the warning here was unhelpful IMO

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this just be memcpy(buf, "v1/", 3);? Or are we relying on the NUL byte that strcpy adds?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I completely rewrote this function in #8327, so watch out for merge conflicts (if mine lands first)

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yeah, thanks for the heads up, will be careful during rebase

@mergennachin

Copy link
Copy Markdown
ContributorAuthor
  • Ignore 'sign-compare' but created a follow-up issue Compile with -Wsign-compare flag #8149
  • Fixed an error that was erroring with -Werror=stringop-truncation
  • Modified the CONTRIBUTION.md file to build the size_test information

@facebook-github-bot

Copy link
Copy Markdown
Contributor

@mergennachin has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator.

@facebook-github-bot

Copy link
Copy Markdown
Contributor

@mergennachin has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator.

ET_SWITCH_SCALAR_OBJ_TYPES(val_type, ctx, name, CTYPE_VAL, [&] {
CTYPE_VAL val;
utils::extract_scalar(fill_value, &val);
ET_KERNEL_CHECK(

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think ET_KERNEL_CHECK will do the right thing in a lambda -- it returns from the lambda, not the operator

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

any suggestions on how to fix?

i think it's fine, since it will return void from the lambda, but sets context to be fail, with error code InvalidArgument.

ET_SWITCH_SCALAR_OBJ_TYPES(val_type, ctx, name, CTYPE_VAL, [&] {
CTYPE_VAL val;
utils::extract_scalar(fill_value, &val);
ET_KERNEL_CHECK(

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think ET_KERNEL_CHECK will do the right thing in a lambda -- it returns from the lambda, not the operator

Comment threadruntime/kernel/operator_registry.cpp Outdated
return;
}
strncpy(buf, "v1/", 3);
strcpy(buf, "v1/");

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the warning here was unhelpful IMO

Comment threadtest/build_size_test.sh Outdated
# shellcheck source=/dev/null
source "$(dirname "${BASH_SOURCE[0]}")/../.ci/scripts/utils.sh"

# Remove -Wno-sign-compare (https://github.com/pytorch/executorch/issues/8149)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

did you mean to put a TODO here?

@swolchok

Copy link
Copy Markdown
Contributor

@mergennachin do you need anything else from me on this one?

@mergennachin

mergennachin commented Feb 10, 2025

Copy link
Copy Markdown
ContributorAuthor

@mergennachin do you need anything else from me on this one?

@swolchok, @dbort

i don't think we have come to a resolution on errors on boolean errors:

https://github.com/pytorch/executorch/actions/runs/13123890485/job/36616081625?pr=8016

i can specialize for boolean cases, and use &&=

@swolchok

Copy link
Copy Markdown
Contributor

&&= does not exist; you'd need &=. IMO such a change would be clear uglification of the code only to suppress a warning

@mergennachin

Copy link
Copy Markdown
ContributorAuthor

such a change would be clear uglification of the code only to suppress a warning

But it's a legitimate warning, no? You can today pass in a random memory location and define it as "boolean" tensor, which will cause some undefined behavior.

unless you pass in UBSAN flag

@swolchok

swolchok commented Feb 10, 2025

Copy link
Copy Markdown
Contributor

I don't think the code change you are considering would address the issue you just raised above.

@mergennachin

Copy link
Copy Markdown
ContributorAuthor

Okay, I will suppress that error for now and create a follow-up issue to track it

@mergennachin
mergennachinforce-pushed the wall branch 3 times, most recently from 8b9425b to 0c82c8bCompareFebruary 11, 2025 01:32
@mergennachin
mergennachin marked this pull request as ready for review February 11, 2025 01:40
Comment threadCONTRIBUTING.md Outdated
Comment threadCONTRIBUTING.md Outdated
Comment threadtest/build_size_test.sh Outdated
@facebook-github-bot

Copy link
Copy Markdown
Contributor

@mergennachin has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator.

@mergennachin
mergennachin merged commit 4e6abf8 into mainFeb 11, 2025
@mergennachin
mergennachin deleted the wall branch February 11, 2025 02:31
b_shape_str.data());
tensor_shape_to_c_string(a_size_span).data(),
tensor_shape_to_c_string(b_size_span).data());
#endif

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

@swolchok

Copy link
Copy Markdown
Contributor

@mergennachin it seems suboptimal for us to enforce -Wall -Werror, but only in a CI job that runs only on trunk, as this will result in unnecessarily-delayed detection of broken trunk. could we perhaps have a pull-time CI job that builds with these flags?

@swolchok

Copy link
Copy Markdown
Contributor

e.g. #8314 promptly broke this on trunk because of -Werror

@mergennachin

Copy link
Copy Markdown
ContributorAuthor

@swolchok test-binary-size is a pull job

perhaps, in this #8314 case your base commit was old and it didn't catch during PR?

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ciflow/trunkCLA SignedThis label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed.topic: not user facing

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@mergennachin@swolchok@facebook-github-bot@digantdesai@dbort
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Make sure size_test CI uses -Wall -Werror - #8016

Merged
mergennachin merged 1 commit into
mainfrom
wall
Feb 11, 2025
Merged

Make sure size_test CI uses -Wall -Werror#8016
mergennachin merged 1 commit into
mainfrom
wall

Conversation

@mergennachin

@mergennachinmergennachin commented Jan 28, 2025

Copy link
Copy Markdown
Contributor

I am not changing the default compilation option for all of ExecuTorch. I'm only changing the compile option for size_test and size_test_all_ops tests.

We don't run size_test for Windows, at least for today

Test Plan:

Run sh test/build_size_test.sh
Add op_fill.cpp with this patch at the end of the file.

int x;
printf("%d", x); // x is uninitialized

Make sure the compilation fails, https://gist.github.com/mergennachin/25b78c63069b9e9b2203e66f94b1a0be

Make sure the compilation succeeds without the "-Wall -Werror" flags.

@pytorch-bot

pytorch-botBot commented Jan 28, 2025

Copy link
Copy Markdown

🔗 Helpful Links

🧪 See artifacts and rendered test results at hud.pytorch.org/pr/pytorch/executorch/8016

Note: Links to docs will display an error until the docs builds have been completed.

This comment was automatically generated by Dr. CI and updates every 15 minutes.

@facebook-github-botfacebook-github-bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label Jan 28, 2025
@mergennachin

Copy link
Copy Markdown
ContributorAuthor

Continuing where I left off: #7940

Not changing CMakeLists.txt this time.

@swolchokswolchok left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

love it

@swolchok

Copy link
Copy Markdown
Contributor

I don't see size_test in the CI jobs?

@mergennachin

mergennachin commented Jan 29, 2025

Copy link
Copy Markdown
ContributorAuthor

I don't see size_test in the CI jobs?

Just rebased (which contain CI fixes)

size_test for clang12 passed, but not for gcc9

https://github.com/pytorch/executorch/actions/runs/13022554836/job/36326025227?pr=8016

Comment threadruntime/kernel/operator_registry.cpp Outdated
return;
}
strncpy(buf, "v1/", 3);
strcpy(buf, "v1/");

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/pytorch/executorch/runtime/kernel/operator_registry.cpp:187:3: note: in expansion of macro 'ET_LOG_TENSOR_META'
187 | ET_LOG_TENSOR_META(meta_list);
| ^~~~~~~~~~~~~~~~~~
In file included from /usr/include/string.h:535,
from /usr/include/c++/9/cstring:42,
from /pytorch/executorch/../executorch/runtime/kernel/operator_registry.h:11,
from /pytorch/executorch/runtime/kernel/operator_registry.cpp:9:
In function 'char* strncpy(char*, const char*, size_t)',
inlined from 'void executorch::runtime::internal::make_kernel_key_string(executorch::runtime::Span<const executorch::runtime::TensorMeta>, char*)' at /pytorch/executorch/runtime/kernel/operator_registry.cpp:138:10:
/usr/include/x86_64-linux-gnu/bits/string_fortified.h:95:34: error: 'char* __builtin_strncpy(char*, const char*, long unsigned int)' output truncated before terminating nul copying 3 bytes from a string of the same length [-Werror=stringop-truncation]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the warning here was unhelpful IMO

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this just be memcpy(buf, "v1/", 3);? Or are we relying on the NUL byte that strcpy adds?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I completely rewrote this function in #8327, so watch out for merge conflicts (if mine lands first)

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yeah, thanks for the heads up, will be careful during rebase

@mergennachin

Copy link
Copy Markdown
ContributorAuthor
  • Ignore 'sign-compare' but created a follow-up issue Compile with -Wsign-compare flag #8149
  • Fixed an error that was erroring with -Werror=stringop-truncation
  • Modified the CONTRIBUTION.md file to build the size_test information

@facebook-github-bot

Copy link
Copy Markdown
Contributor

@mergennachin has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator.

@facebook-github-bot

Copy link
Copy Markdown
Contributor

@mergennachin has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator.

ET_SWITCH_SCALAR_OBJ_TYPES(val_type, ctx, name, CTYPE_VAL, [&] {
CTYPE_VAL val;
utils::extract_scalar(fill_value, &val);
ET_KERNEL_CHECK(

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think ET_KERNEL_CHECK will do the right thing in a lambda -- it returns from the lambda, not the operator

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

any suggestions on how to fix?

i think it's fine, since it will return void from the lambda, but sets context to be fail, with error code InvalidArgument.

ET_SWITCH_SCALAR_OBJ_TYPES(val_type, ctx, name, CTYPE_VAL, [&] {
CTYPE_VAL val;
utils::extract_scalar(fill_value, &val);
ET_KERNEL_CHECK(

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think ET_KERNEL_CHECK will do the right thing in a lambda -- it returns from the lambda, not the operator

Comment threadruntime/kernel/operator_registry.cpp Outdated
return;
}
strncpy(buf, "v1/", 3);
strcpy(buf, "v1/");

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the warning here was unhelpful IMO

Comment threadtest/build_size_test.sh Outdated
# shellcheck source=/dev/null
source "$(dirname "${BASH_SOURCE[0]}")/../.ci/scripts/utils.sh"

# Remove -Wno-sign-compare (https://github.com/pytorch/executorch/issues/8149)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

did you mean to put a TODO here?

@swolchok

Copy link
Copy Markdown
Contributor

@mergennachin do you need anything else from me on this one?

@mergennachin

mergennachin commented Feb 10, 2025

Copy link
Copy Markdown
ContributorAuthor

@mergennachin do you need anything else from me on this one?

@swolchok, @dbort

i don't think we have come to a resolution on errors on boolean errors:

https://github.com/pytorch/executorch/actions/runs/13123890485/job/36616081625?pr=8016

i can specialize for boolean cases, and use &&=

@swolchok

Copy link
Copy Markdown
Contributor

&&= does not exist; you'd need &=. IMO such a change would be clear uglification of the code only to suppress a warning

@mergennachin

Copy link
Copy Markdown
ContributorAuthor

such a change would be clear uglification of the code only to suppress a warning

But it's a legitimate warning, no? You can today pass in a random memory location and define it as "boolean" tensor, which will cause some undefined behavior.

unless you pass in UBSAN flag

@swolchok

swolchok commented Feb 10, 2025

Copy link
Copy Markdown
Contributor

I don't think the code change you are considering would address the issue you just raised above.

@mergennachin

Copy link
Copy Markdown
ContributorAuthor

Okay, I will suppress that error for now and create a follow-up issue to track it

@mergennachin
mergennachinforce-pushed the wall branch 3 times, most recently from 8b9425b to 0c82c8bCompareFebruary 11, 2025 01:32
@mergennachin
mergennachin marked this pull request as ready for review February 11, 2025 01:40
Comment threadCONTRIBUTING.md Outdated
Comment threadCONTRIBUTING.md Outdated
Comment threadtest/build_size_test.sh Outdated
@facebook-github-bot

Copy link
Copy Markdown
Contributor

@mergennachin has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator.

@mergennachin
mergennachin merged commit 4e6abf8 into mainFeb 11, 2025
@mergennachin
mergennachin deleted the wall branch February 11, 2025 02:31
b_shape_str.data());
tensor_shape_to_c_string(a_size_span).data(),
tensor_shape_to_c_string(b_size_span).data());
#endif

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

@swolchok

Copy link
Copy Markdown
Contributor

@mergennachin it seems suboptimal for us to enforce -Wall -Werror, but only in a CI job that runs only on trunk, as this will result in unnecessarily-delayed detection of broken trunk. could we perhaps have a pull-time CI job that builds with these flags?

@swolchok

Copy link
Copy Markdown
Contributor

e.g. #8314 promptly broke this on trunk because of -Werror

@mergennachin

Copy link
Copy Markdown
ContributorAuthor

@swolchok test-binary-size is a pull job

perhaps, in this #8314 case your base commit was old and it didn't catch during PR?

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ciflow/trunkCLA SignedThis label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed.topic: not user facing

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@mergennachin@swolchok@facebook-github-bot@digantdesai@dbort
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Make sure size_test CI uses -Wall -Werror - #8016

Merged
mergennachin merged 1 commit into
mainfrom
wall
Feb 11, 2025
Merged

Make sure size_test CI uses -Wall -Werror#8016
mergennachin merged 1 commit into
mainfrom
wall

Conversation

@mergennachin

@mergennachinmergennachin commented Jan 28, 2025

Copy link
Copy Markdown
Contributor

I am not changing the default compilation option for all of ExecuTorch. I'm only changing the compile option for size_test and size_test_all_ops tests.

We don't run size_test for Windows, at least for today

Test Plan:

Run sh test/build_size_test.sh
Add op_fill.cpp with this patch at the end of the file.

int x;
printf("%d", x); // x is uninitialized

Make sure the compilation fails, https://gist.github.com/mergennachin/25b78c63069b9e9b2203e66f94b1a0be

Make sure the compilation succeeds without the "-Wall -Werror" flags.

@pytorch-bot

pytorch-botBot commented Jan 28, 2025

Copy link
Copy Markdown

🔗 Helpful Links

🧪 See artifacts and rendered test results at hud.pytorch.org/pr/pytorch/executorch/8016

Note: Links to docs will display an error until the docs builds have been completed.

This comment was automatically generated by Dr. CI and updates every 15 minutes.

@facebook-github-botfacebook-github-bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label Jan 28, 2025
@mergennachin

Copy link
Copy Markdown
ContributorAuthor

Continuing where I left off: #7940

Not changing CMakeLists.txt this time.

@swolchokswolchok left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

love it

@swolchok

Copy link
Copy Markdown
Contributor

I don't see size_test in the CI jobs?

@mergennachin

mergennachin commented Jan 29, 2025

Copy link
Copy Markdown
ContributorAuthor

I don't see size_test in the CI jobs?

Just rebased (which contain CI fixes)

size_test for clang12 passed, but not for gcc9

https://github.com/pytorch/executorch/actions/runs/13022554836/job/36326025227?pr=8016

Comment threadruntime/kernel/operator_registry.cpp Outdated
return;
}
strncpy(buf, "v1/", 3);
strcpy(buf, "v1/");

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/pytorch/executorch/runtime/kernel/operator_registry.cpp:187:3: note: in expansion of macro 'ET_LOG_TENSOR_META'
187 | ET_LOG_TENSOR_META(meta_list);
| ^~~~~~~~~~~~~~~~~~
In file included from /usr/include/string.h:535,
from /usr/include/c++/9/cstring:42,
from /pytorch/executorch/../executorch/runtime/kernel/operator_registry.h:11,
from /pytorch/executorch/runtime/kernel/operator_registry.cpp:9:
In function 'char* strncpy(char*, const char*, size_t)',
inlined from 'void executorch::runtime::internal::make_kernel_key_string(executorch::runtime::Span<const executorch::runtime::TensorMeta>, char*)' at /pytorch/executorch/runtime/kernel/operator_registry.cpp:138:10:
/usr/include/x86_64-linux-gnu/bits/string_fortified.h:95:34: error: 'char* __builtin_strncpy(char*, const char*, long unsigned int)' output truncated before terminating nul copying 3 bytes from a string of the same length [-Werror=stringop-truncation]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the warning here was unhelpful IMO

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this just be memcpy(buf, "v1/", 3);? Or are we relying on the NUL byte that strcpy adds?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I completely rewrote this function in #8327, so watch out for merge conflicts (if mine lands first)

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yeah, thanks for the heads up, will be careful during rebase

@mergennachin

Copy link
Copy Markdown
ContributorAuthor
  • Ignore 'sign-compare' but created a follow-up issue Compile with -Wsign-compare flag #8149
  • Fixed an error that was erroring with -Werror=stringop-truncation
  • Modified the CONTRIBUTION.md file to build the size_test information

@facebook-github-bot

Copy link
Copy Markdown
Contributor

@mergennachin has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator.

@facebook-github-bot

Copy link
Copy Markdown
Contributor

@mergennachin has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator.

ET_SWITCH_SCALAR_OBJ_TYPES(val_type, ctx, name, CTYPE_VAL, [&] {
CTYPE_VAL val;
utils::extract_scalar(fill_value, &val);
ET_KERNEL_CHECK(

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think ET_KERNEL_CHECK will do the right thing in a lambda -- it returns from the lambda, not the operator

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

any suggestions on how to fix?

i think it's fine, since it will return void from the lambda, but sets context to be fail, with error code InvalidArgument.

ET_SWITCH_SCALAR_OBJ_TYPES(val_type, ctx, name, CTYPE_VAL, [&] {
CTYPE_VAL val;
utils::extract_scalar(fill_value, &val);
ET_KERNEL_CHECK(

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think ET_KERNEL_CHECK will do the right thing in a lambda -- it returns from the lambda, not the operator

Comment threadruntime/kernel/operator_registry.cpp Outdated
return;
}
strncpy(buf, "v1/", 3);
strcpy(buf, "v1/");

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the warning here was unhelpful IMO

Comment threadtest/build_size_test.sh Outdated
# shellcheck source=/dev/null
source "$(dirname "${BASH_SOURCE[0]}")/../.ci/scripts/utils.sh"

# Remove -Wno-sign-compare (https://github.com/pytorch/executorch/issues/8149)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

did you mean to put a TODO here?

@swolchok

Copy link
Copy Markdown
Contributor

@mergennachin do you need anything else from me on this one?

@mergennachin

mergennachin commented Feb 10, 2025

Copy link
Copy Markdown
ContributorAuthor

@mergennachin do you need anything else from me on this one?

@swolchok, @dbort

i don't think we have come to a resolution on errors on boolean errors:

https://github.com/pytorch/executorch/actions/runs/13123890485/job/36616081625?pr=8016

i can specialize for boolean cases, and use &&=

@swolchok

Copy link
Copy Markdown
Contributor

&&= does not exist; you'd need &=. IMO such a change would be clear uglification of the code only to suppress a warning

@mergennachin

Copy link
Copy Markdown
ContributorAuthor

such a change would be clear uglification of the code only to suppress a warning

But it's a legitimate warning, no? You can today pass in a random memory location and define it as "boolean" tensor, which will cause some undefined behavior.

unless you pass in UBSAN flag

@swolchok

swolchok commented Feb 10, 2025

Copy link
Copy Markdown
Contributor

I don't think the code change you are considering would address the issue you just raised above.

@mergennachin

Copy link
Copy Markdown
ContributorAuthor

Okay, I will suppress that error for now and create a follow-up issue to track it

@mergennachin
mergennachinforce-pushed the wall branch 3 times, most recently from 8b9425b to 0c82c8bCompareFebruary 11, 2025 01:32
@mergennachin
mergennachin marked this pull request as ready for review February 11, 2025 01:40
Comment threadCONTRIBUTING.md Outdated
Comment threadCONTRIBUTING.md Outdated
Comment threadtest/build_size_test.sh Outdated
@facebook-github-bot

Copy link
Copy Markdown
Contributor

@mergennachin has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator.

@mergennachin
mergennachin merged commit 4e6abf8 into mainFeb 11, 2025
@mergennachin
mergennachin deleted the wall branch February 11, 2025 02:31
b_shape_str.data());
tensor_shape_to_c_string(a_size_span).data(),
tensor_shape_to_c_string(b_size_span).data());
#endif

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

@swolchok

Copy link
Copy Markdown
Contributor

@mergennachin it seems suboptimal for us to enforce -Wall -Werror, but only in a CI job that runs only on trunk, as this will result in unnecessarily-delayed detection of broken trunk. could we perhaps have a pull-time CI job that builds with these flags?

@swolchok

Copy link
Copy Markdown
Contributor

e.g. #8314 promptly broke this on trunk because of -Werror

@mergennachin

Copy link
Copy Markdown
ContributorAuthor

@swolchok test-binary-size is a pull job

perhaps, in this #8314 case your base commit was old and it didn't catch during PR?

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ciflow/trunkCLA SignedThis label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed.topic: not user facing

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@mergennachin@swolchok@facebook-github-bot@digantdesai@dbort
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Make sure size_test CI uses -Wall -Werror - #8016

Merged
mergennachin merged 1 commit into
mainfrom
wall
Feb 11, 2025
Merged

Make sure size_test CI uses -Wall -Werror#8016
mergennachin merged 1 commit into
mainfrom
wall

Conversation

@mergennachin

@mergennachinmergennachin commented Jan 28, 2025

Copy link
Copy Markdown
Contributor

I am not changing the default compilation option for all of ExecuTorch. I'm only changing the compile option for size_test and size_test_all_ops tests.

We don't run size_test for Windows, at least for today

Test Plan:

Run sh test/build_size_test.sh
Add op_fill.cpp with this patch at the end of the file.

int x;
printf("%d", x); // x is uninitialized

Make sure the compilation fails, https://gist.github.com/mergennachin/25b78c63069b9e9b2203e66f94b1a0be

Make sure the compilation succeeds without the "-Wall -Werror" flags.

@pytorch-bot

pytorch-botBot commented Jan 28, 2025

Copy link
Copy Markdown

🔗 Helpful Links

🧪 See artifacts and rendered test results at hud.pytorch.org/pr/pytorch/executorch/8016

Note: Links to docs will display an error until the docs builds have been completed.

This comment was automatically generated by Dr. CI and updates every 15 minutes.

@facebook-github-botfacebook-github-bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label Jan 28, 2025
@mergennachin

Copy link
Copy Markdown
ContributorAuthor

Continuing where I left off: #7940

Not changing CMakeLists.txt this time.

@swolchokswolchok left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

love it

@swolchok

Copy link
Copy Markdown
Contributor

I don't see size_test in the CI jobs?

@mergennachin

mergennachin commented Jan 29, 2025

Copy link
Copy Markdown
ContributorAuthor

I don't see size_test in the CI jobs?

Just rebased (which contain CI fixes)

size_test for clang12 passed, but not for gcc9

https://github.com/pytorch/executorch/actions/runs/13022554836/job/36326025227?pr=8016

Comment threadruntime/kernel/operator_registry.cpp Outdated
return;
}
strncpy(buf, "v1/", 3);
strcpy(buf, "v1/");

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/pytorch/executorch/runtime/kernel/operator_registry.cpp:187:3: note: in expansion of macro 'ET_LOG_TENSOR_META'
187 | ET_LOG_TENSOR_META(meta_list);
| ^~~~~~~~~~~~~~~~~~
In file included from /usr/include/string.h:535,
from /usr/include/c++/9/cstring:42,
from /pytorch/executorch/../executorch/runtime/kernel/operator_registry.h:11,
from /pytorch/executorch/runtime/kernel/operator_registry.cpp:9:
In function 'char* strncpy(char*, const char*, size_t)',
inlined from 'void executorch::runtime::internal::make_kernel_key_string(executorch::runtime::Span<const executorch::runtime::TensorMeta>, char*)' at /pytorch/executorch/runtime/kernel/operator_registry.cpp:138:10:
/usr/include/x86_64-linux-gnu/bits/string_fortified.h:95:34: error: 'char* __builtin_strncpy(char*, const char*, long unsigned int)' output truncated before terminating nul copying 3 bytes from a string of the same length [-Werror=stringop-truncation]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the warning here was unhelpful IMO

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this just be memcpy(buf, "v1/", 3);? Or are we relying on the NUL byte that strcpy adds?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I completely rewrote this function in #8327, so watch out for merge conflicts (if mine lands first)

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yeah, thanks for the heads up, will be careful during rebase

@mergennachin

Copy link
Copy Markdown
ContributorAuthor
  • Ignore 'sign-compare' but created a follow-up issue Compile with -Wsign-compare flag #8149
  • Fixed an error that was erroring with -Werror=stringop-truncation
  • Modified the CONTRIBUTION.md file to build the size_test information

@facebook-github-bot

Copy link
Copy Markdown
Contributor

@mergennachin has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator.

@facebook-github-bot

Copy link
Copy Markdown
Contributor

@mergennachin has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator.

ET_SWITCH_SCALAR_OBJ_TYPES(val_type, ctx, name, CTYPE_VAL, [&] {
CTYPE_VAL val;
utils::extract_scalar(fill_value, &val);
ET_KERNEL_CHECK(

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think ET_KERNEL_CHECK will do the right thing in a lambda -- it returns from the lambda, not the operator

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

any suggestions on how to fix?

i think it's fine, since it will return void from the lambda, but sets context to be fail, with error code InvalidArgument.

ET_SWITCH_SCALAR_OBJ_TYPES(val_type, ctx, name, CTYPE_VAL, [&] {
CTYPE_VAL val;
utils::extract_scalar(fill_value, &val);
ET_KERNEL_CHECK(

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think ET_KERNEL_CHECK will do the right thing in a lambda -- it returns from the lambda, not the operator

Comment threadruntime/kernel/operator_registry.cpp Outdated
return;
}
strncpy(buf, "v1/", 3);
strcpy(buf, "v1/");

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the warning here was unhelpful IMO

Comment threadtest/build_size_test.sh Outdated
# shellcheck source=/dev/null
source "$(dirname "${BASH_SOURCE[0]}")/../.ci/scripts/utils.sh"

# Remove -Wno-sign-compare (https://github.com/pytorch/executorch/issues/8149)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

did you mean to put a TODO here?

@swolchok

Copy link
Copy Markdown
Contributor

@mergennachin do you need anything else from me on this one?

@mergennachin

mergennachin commented Feb 10, 2025

Copy link
Copy Markdown
ContributorAuthor

@mergennachin do you need anything else from me on this one?

@swolchok, @dbort

i don't think we have come to a resolution on errors on boolean errors:

https://github.com/pytorch/executorch/actions/runs/13123890485/job/36616081625?pr=8016

i can specialize for boolean cases, and use &&=

@swolchok

Copy link
Copy Markdown
Contributor

&&= does not exist; you'd need &=. IMO such a change would be clear uglification of the code only to suppress a warning

@mergennachin

Copy link
Copy Markdown
ContributorAuthor

such a change would be clear uglification of the code only to suppress a warning

But it's a legitimate warning, no? You can today pass in a random memory location and define it as "boolean" tensor, which will cause some undefined behavior.

unless you pass in UBSAN flag

@swolchok

swolchok commented Feb 10, 2025

Copy link
Copy Markdown
Contributor

I don't think the code change you are considering would address the issue you just raised above.

@mergennachin

Copy link
Copy Markdown
ContributorAuthor

Okay, I will suppress that error for now and create a follow-up issue to track it

@mergennachin
mergennachinforce-pushed the wall branch 3 times, most recently from 8b9425b to 0c82c8bCompareFebruary 11, 2025 01:32
@mergennachin
mergennachin marked this pull request as ready for review February 11, 2025 01:40
Comment threadCONTRIBUTING.md Outdated
Comment threadCONTRIBUTING.md Outdated
Comment threadtest/build_size_test.sh Outdated
@facebook-github-bot

Copy link
Copy Markdown
Contributor

@mergennachin has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator.

@mergennachin
mergennachin merged commit 4e6abf8 into mainFeb 11, 2025
@mergennachin
mergennachin deleted the wall branch February 11, 2025 02:31
b_shape_str.data());
tensor_shape_to_c_string(a_size_span).data(),
tensor_shape_to_c_string(b_size_span).data());
#endif

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

@swolchok

Copy link
Copy Markdown
Contributor

@mergennachin it seems suboptimal for us to enforce -Wall -Werror, but only in a CI job that runs only on trunk, as this will result in unnecessarily-delayed detection of broken trunk. could we perhaps have a pull-time CI job that builds with these flags?

@swolchok

Copy link
Copy Markdown
Contributor

e.g. #8314 promptly broke this on trunk because of -Werror

@mergennachin

Copy link
Copy Markdown
ContributorAuthor

@swolchok test-binary-size is a pull job

perhaps, in this #8314 case your base commit was old and it didn't catch during PR?

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ciflow/trunkCLA SignedThis label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed.topic: not user facing

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@mergennachin@swolchok@facebook-github-bot@digantdesai@dbort
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Make sure size_test CI uses -Wall -Werror - #8016

Merged
mergennachin merged 1 commit into
mainfrom
wall
Feb 11, 2025
Merged

Make sure size_test CI uses -Wall -Werror#8016
mergennachin merged 1 commit into
mainfrom
wall

Conversation

@mergennachin

@mergennachinmergennachin commented Jan 28, 2025

Copy link
Copy Markdown
Contributor

I am not changing the default compilation option for all of ExecuTorch. I'm only changing the compile option for size_test and size_test_all_ops tests.

We don't run size_test for Windows, at least for today

Test Plan:

Run sh test/build_size_test.sh
Add op_fill.cpp with this patch at the end of the file.

int x;
printf("%d", x); // x is uninitialized

Make sure the compilation fails, https://gist.github.com/mergennachin/25b78c63069b9e9b2203e66f94b1a0be

Make sure the compilation succeeds without the "-Wall -Werror" flags.

@pytorch-bot

pytorch-botBot commented Jan 28, 2025

Copy link
Copy Markdown

🔗 Helpful Links

🧪 See artifacts and rendered test results at hud.pytorch.org/pr/pytorch/executorch/8016

Note: Links to docs will display an error until the docs builds have been completed.

This comment was automatically generated by Dr. CI and updates every 15 minutes.

@facebook-github-botfacebook-github-bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label Jan 28, 2025
@mergennachin

Copy link
Copy Markdown
ContributorAuthor

Continuing where I left off: #7940

Not changing CMakeLists.txt this time.

@swolchokswolchok left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

love it

@swolchok

Copy link
Copy Markdown
Contributor

I don't see size_test in the CI jobs?

@mergennachin

mergennachin commented Jan 29, 2025

Copy link
Copy Markdown
ContributorAuthor

I don't see size_test in the CI jobs?

Just rebased (which contain CI fixes)

size_test for clang12 passed, but not for gcc9

https://github.com/pytorch/executorch/actions/runs/13022554836/job/36326025227?pr=8016

Comment threadruntime/kernel/operator_registry.cpp Outdated
return;
}
strncpy(buf, "v1/", 3);
strcpy(buf, "v1/");

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/pytorch/executorch/runtime/kernel/operator_registry.cpp:187:3: note: in expansion of macro 'ET_LOG_TENSOR_META'
187 | ET_LOG_TENSOR_META(meta_list);
| ^~~~~~~~~~~~~~~~~~
In file included from /usr/include/string.h:535,
from /usr/include/c++/9/cstring:42,
from /pytorch/executorch/../executorch/runtime/kernel/operator_registry.h:11,
from /pytorch/executorch/runtime/kernel/operator_registry.cpp:9:
In function 'char* strncpy(char*, const char*, size_t)',
inlined from 'void executorch::runtime::internal::make_kernel_key_string(executorch::runtime::Span<const executorch::runtime::TensorMeta>, char*)' at /pytorch/executorch/runtime/kernel/operator_registry.cpp:138:10:
/usr/include/x86_64-linux-gnu/bits/string_fortified.h:95:34: error: 'char* __builtin_strncpy(char*, const char*, long unsigned int)' output truncated before terminating nul copying 3 bytes from a string of the same length [-Werror=stringop-truncation]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the warning here was unhelpful IMO

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this just be memcpy(buf, "v1/", 3);? Or are we relying on the NUL byte that strcpy adds?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I completely rewrote this function in #8327, so watch out for merge conflicts (if mine lands first)

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yeah, thanks for the heads up, will be careful during rebase

@mergennachin

Copy link
Copy Markdown
ContributorAuthor
  • Ignore 'sign-compare' but created a follow-up issue Compile with -Wsign-compare flag #8149
  • Fixed an error that was erroring with -Werror=stringop-truncation
  • Modified the CONTRIBUTION.md file to build the size_test information

@facebook-github-bot

Copy link
Copy Markdown
Contributor

@mergennachin has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator.

@facebook-github-bot

Copy link
Copy Markdown
Contributor

@mergennachin has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator.

ET_SWITCH_SCALAR_OBJ_TYPES(val_type, ctx, name, CTYPE_VAL, [&] {
CTYPE_VAL val;
utils::extract_scalar(fill_value, &val);
ET_KERNEL_CHECK(

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think ET_KERNEL_CHECK will do the right thing in a lambda -- it returns from the lambda, not the operator

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

any suggestions on how to fix?

i think it's fine, since it will return void from the lambda, but sets context to be fail, with error code InvalidArgument.

ET_SWITCH_SCALAR_OBJ_TYPES(val_type, ctx, name, CTYPE_VAL, [&] {
CTYPE_VAL val;
utils::extract_scalar(fill_value, &val);
ET_KERNEL_CHECK(

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think ET_KERNEL_CHECK will do the right thing in a lambda -- it returns from the lambda, not the operator

Comment threadruntime/kernel/operator_registry.cpp Outdated
return;
}
strncpy(buf, "v1/", 3);
strcpy(buf, "v1/");

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the warning here was unhelpful IMO

Comment threadtest/build_size_test.sh Outdated
# shellcheck source=/dev/null
source "$(dirname "${BASH_SOURCE[0]}")/../.ci/scripts/utils.sh"

# Remove -Wno-sign-compare (https://github.com/pytorch/executorch/issues/8149)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

did you mean to put a TODO here?

@swolchok

Copy link
Copy Markdown
Contributor

@mergennachin do you need anything else from me on this one?

@mergennachin

mergennachin commented Feb 10, 2025

Copy link
Copy Markdown
ContributorAuthor

@mergennachin do you need anything else from me on this one?

@swolchok, @dbort

i don't think we have come to a resolution on errors on boolean errors:

https://github.com/pytorch/executorch/actions/runs/13123890485/job/36616081625?pr=8016

i can specialize for boolean cases, and use &&=

@swolchok

Copy link
Copy Markdown
Contributor

&&= does not exist; you'd need &=. IMO such a change would be clear uglification of the code only to suppress a warning

@mergennachin

Copy link
Copy Markdown
ContributorAuthor

such a change would be clear uglification of the code only to suppress a warning

But it's a legitimate warning, no? You can today pass in a random memory location and define it as "boolean" tensor, which will cause some undefined behavior.

unless you pass in UBSAN flag

@swolchok

swolchok commented Feb 10, 2025

Copy link
Copy Markdown
Contributor

I don't think the code change you are considering would address the issue you just raised above.

@mergennachin

Copy link
Copy Markdown
ContributorAuthor

Okay, I will suppress that error for now and create a follow-up issue to track it

@mergennachin
mergennachinforce-pushed the wall branch 3 times, most recently from 8b9425b to 0c82c8bCompareFebruary 11, 2025 01:32
@mergennachin
mergennachin marked this pull request as ready for review February 11, 2025 01:40
Comment threadCONTRIBUTING.md Outdated
Comment threadCONTRIBUTING.md Outdated
Comment threadtest/build_size_test.sh Outdated
@facebook-github-bot

Copy link
Copy Markdown
Contributor

@mergennachin has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator.

@mergennachin
mergennachin merged commit 4e6abf8 into mainFeb 11, 2025
@mergennachin
mergennachin deleted the wall branch February 11, 2025 02:31
b_shape_str.data());
tensor_shape_to_c_string(a_size_span).data(),
tensor_shape_to_c_string(b_size_span).data());
#endif

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

@swolchok

Copy link
Copy Markdown
Contributor

@mergennachin it seems suboptimal for us to enforce -Wall -Werror, but only in a CI job that runs only on trunk, as this will result in unnecessarily-delayed detection of broken trunk. could we perhaps have a pull-time CI job that builds with these flags?

@swolchok

Copy link
Copy Markdown
Contributor

e.g. #8314 promptly broke this on trunk because of -Werror

@mergennachin

Copy link
Copy Markdown
ContributorAuthor

@swolchok test-binary-size is a pull job

perhaps, in this #8314 case your base commit was old and it didn't catch during PR?

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ciflow/trunkCLA SignedThis label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed.topic: not user facing

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@mergennachin@swolchok@facebook-github-bot@digantdesai@dbort
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Make sure size_test CI uses -Wall -Werror - #8016

Merged
mergennachin merged 1 commit into
mainfrom
wall
Feb 11, 2025
Merged

Make sure size_test CI uses -Wall -Werror#8016
mergennachin merged 1 commit into
mainfrom
wall

Conversation

@mergennachin

@mergennachinmergennachin commented Jan 28, 2025

Copy link
Copy Markdown
Contributor

I am not changing the default compilation option for all of ExecuTorch. I'm only changing the compile option for size_test and size_test_all_ops tests.

We don't run size_test for Windows, at least for today

Test Plan:

Run sh test/build_size_test.sh
Add op_fill.cpp with this patch at the end of the file.

int x;
printf("%d", x); // x is uninitialized

Make sure the compilation fails, https://gist.github.com/mergennachin/25b78c63069b9e9b2203e66f94b1a0be

Make sure the compilation succeeds without the "-Wall -Werror" flags.

@pytorch-bot

pytorch-botBot commented Jan 28, 2025

Copy link
Copy Markdown

🔗 Helpful Links

🧪 See artifacts and rendered test results at hud.pytorch.org/pr/pytorch/executorch/8016

Note: Links to docs will display an error until the docs builds have been completed.

This comment was automatically generated by Dr. CI and updates every 15 minutes.

@facebook-github-botfacebook-github-bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label Jan 28, 2025
@mergennachin

Copy link
Copy Markdown
ContributorAuthor

Continuing where I left off: #7940

Not changing CMakeLists.txt this time.

@swolchokswolchok left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

love it

@swolchok

Copy link
Copy Markdown
Contributor

I don't see size_test in the CI jobs?

@mergennachin

mergennachin commented Jan 29, 2025

Copy link
Copy Markdown
ContributorAuthor

I don't see size_test in the CI jobs?

Just rebased (which contain CI fixes)

size_test for clang12 passed, but not for gcc9

https://github.com/pytorch/executorch/actions/runs/13022554836/job/36326025227?pr=8016

Comment threadruntime/kernel/operator_registry.cpp Outdated
return;
}
strncpy(buf, "v1/", 3);
strcpy(buf, "v1/");

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/pytorch/executorch/runtime/kernel/operator_registry.cpp:187:3: note: in expansion of macro 'ET_LOG_TENSOR_META'
187 | ET_LOG_TENSOR_META(meta_list);
| ^~~~~~~~~~~~~~~~~~
In file included from /usr/include/string.h:535,
from /usr/include/c++/9/cstring:42,
from /pytorch/executorch/../executorch/runtime/kernel/operator_registry.h:11,
from /pytorch/executorch/runtime/kernel/operator_registry.cpp:9:
In function 'char* strncpy(char*, const char*, size_t)',
inlined from 'void executorch::runtime::internal::make_kernel_key_string(executorch::runtime::Span<const executorch::runtime::TensorMeta>, char*)' at /pytorch/executorch/runtime/kernel/operator_registry.cpp:138:10:
/usr/include/x86_64-linux-gnu/bits/string_fortified.h:95:34: error: 'char* __builtin_strncpy(char*, const char*, long unsigned int)' output truncated before terminating nul copying 3 bytes from a string of the same length [-Werror=stringop-truncation]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the warning here was unhelpful IMO

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this just be memcpy(buf, "v1/", 3);? Or are we relying on the NUL byte that strcpy adds?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I completely rewrote this function in #8327, so watch out for merge conflicts (if mine lands first)

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yeah, thanks for the heads up, will be careful during rebase

@mergennachin

Copy link
Copy Markdown
ContributorAuthor
  • Ignore 'sign-compare' but created a follow-up issue Compile with -Wsign-compare flag #8149
  • Fixed an error that was erroring with -Werror=stringop-truncation
  • Modified the CONTRIBUTION.md file to build the size_test information

@facebook-github-bot

Copy link
Copy Markdown
Contributor

@mergennachin has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator.

@facebook-github-bot

Copy link
Copy Markdown
Contributor

@mergennachin has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator.

ET_SWITCH_SCALAR_OBJ_TYPES(val_type, ctx, name, CTYPE_VAL, [&] {
CTYPE_VAL val;
utils::extract_scalar(fill_value, &val);
ET_KERNEL_CHECK(

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think ET_KERNEL_CHECK will do the right thing in a lambda -- it returns from the lambda, not the operator

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

any suggestions on how to fix?

i think it's fine, since it will return void from the lambda, but sets context to be fail, with error code InvalidArgument.

ET_SWITCH_SCALAR_OBJ_TYPES(val_type, ctx, name, CTYPE_VAL, [&] {
CTYPE_VAL val;
utils::extract_scalar(fill_value, &val);
ET_KERNEL_CHECK(

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think ET_KERNEL_CHECK will do the right thing in a lambda -- it returns from the lambda, not the operator

Comment threadruntime/kernel/operator_registry.cpp Outdated
return;
}
strncpy(buf, "v1/", 3);
strcpy(buf, "v1/");

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the warning here was unhelpful IMO

Comment threadtest/build_size_test.sh Outdated
# shellcheck source=/dev/null
source "$(dirname "${BASH_SOURCE[0]}")/../.ci/scripts/utils.sh"

# Remove -Wno-sign-compare (https://github.com/pytorch/executorch/issues/8149)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

did you mean to put a TODO here?

@swolchok

Copy link
Copy Markdown
Contributor

@mergennachin do you need anything else from me on this one?

@mergennachin

mergennachin commented Feb 10, 2025

Copy link
Copy Markdown
ContributorAuthor

@mergennachin do you need anything else from me on this one?

@swolchok, @dbort

i don't think we have come to a resolution on errors on boolean errors:

https://github.com/pytorch/executorch/actions/runs/13123890485/job/36616081625?pr=8016

i can specialize for boolean cases, and use &&=

@swolchok

Copy link
Copy Markdown
Contributor

&&= does not exist; you'd need &=. IMO such a change would be clear uglification of the code only to suppress a warning

@mergennachin

Copy link
Copy Markdown
ContributorAuthor

such a change would be clear uglification of the code only to suppress a warning

But it's a legitimate warning, no? You can today pass in a random memory location and define it as "boolean" tensor, which will cause some undefined behavior.

unless you pass in UBSAN flag

@swolchok

swolchok commented Feb 10, 2025

Copy link
Copy Markdown
Contributor

I don't think the code change you are considering would address the issue you just raised above.

@mergennachin

Copy link
Copy Markdown
ContributorAuthor

Okay, I will suppress that error for now and create a follow-up issue to track it

@mergennachin
mergennachinforce-pushed the wall branch 3 times, most recently from 8b9425b to 0c82c8bCompareFebruary 11, 2025 01:32
@mergennachin
mergennachin marked this pull request as ready for review February 11, 2025 01:40
Comment threadCONTRIBUTING.md Outdated
Comment threadCONTRIBUTING.md Outdated
Comment threadtest/build_size_test.sh Outdated
@facebook-github-bot

Copy link
Copy Markdown
Contributor

@mergennachin has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator.

@mergennachin
mergennachin merged commit 4e6abf8 into mainFeb 11, 2025
@mergennachin
mergennachin deleted the wall branch February 11, 2025 02:31
b_shape_str.data());
tensor_shape_to_c_string(a_size_span).data(),
tensor_shape_to_c_string(b_size_span).data());
#endif

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

@swolchok

Copy link
Copy Markdown
Contributor

@mergennachin it seems suboptimal for us to enforce -Wall -Werror, but only in a CI job that runs only on trunk, as this will result in unnecessarily-delayed detection of broken trunk. could we perhaps have a pull-time CI job that builds with these flags?

@swolchok

Copy link
Copy Markdown
Contributor

e.g. #8314 promptly broke this on trunk because of -Werror

@mergennachin

Copy link
Copy Markdown
ContributorAuthor

@swolchok test-binary-size is a pull job

perhaps, in this #8314 case your base commit was old and it didn't catch during PR?

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ciflow/trunkCLA SignedThis label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed.topic: not user facing

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@mergennachin@swolchok@facebook-github-bot@digantdesai@dbort
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Make sure size_test CI uses -Wall -Werror - #8016

Merged
mergennachin merged 1 commit into
mainfrom
wall
Feb 11, 2025
Merged

Make sure size_test CI uses -Wall -Werror#8016
mergennachin merged 1 commit into
mainfrom
wall

Conversation

@mergennachin

@mergennachinmergennachin commented Jan 28, 2025

Copy link
Copy Markdown
Contributor

I am not changing the default compilation option for all of ExecuTorch. I'm only changing the compile option for size_test and size_test_all_ops tests.

We don't run size_test for Windows, at least for today

Test Plan:

Run sh test/build_size_test.sh
Add op_fill.cpp with this patch at the end of the file.

int x;
printf("%d", x); // x is uninitialized

Make sure the compilation fails, https://gist.github.com/mergennachin/25b78c63069b9e9b2203e66f94b1a0be

Make sure the compilation succeeds without the "-Wall -Werror" flags.

@pytorch-bot

pytorch-botBot commented Jan 28, 2025

Copy link
Copy Markdown

🔗 Helpful Links

🧪 See artifacts and rendered test results at hud.pytorch.org/pr/pytorch/executorch/8016

Note: Links to docs will display an error until the docs builds have been completed.

This comment was automatically generated by Dr. CI and updates every 15 minutes.

@facebook-github-botfacebook-github-bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label Jan 28, 2025
@mergennachin

Copy link
Copy Markdown
ContributorAuthor

Continuing where I left off: #7940

Not changing CMakeLists.txt this time.

@swolchokswolchok left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

love it

@swolchok

Copy link
Copy Markdown
Contributor

I don't see size_test in the CI jobs?

@mergennachin

mergennachin commented Jan 29, 2025

Copy link
Copy Markdown
ContributorAuthor

I don't see size_test in the CI jobs?

Just rebased (which contain CI fixes)

size_test for clang12 passed, but not for gcc9

https://github.com/pytorch/executorch/actions/runs/13022554836/job/36326025227?pr=8016

Comment threadruntime/kernel/operator_registry.cpp Outdated
return;
}
strncpy(buf, "v1/", 3);
strcpy(buf, "v1/");

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/pytorch/executorch/runtime/kernel/operator_registry.cpp:187:3: note: in expansion of macro 'ET_LOG_TENSOR_META'
187 | ET_LOG_TENSOR_META(meta_list);
| ^~~~~~~~~~~~~~~~~~
In file included from /usr/include/string.h:535,
from /usr/include/c++/9/cstring:42,
from /pytorch/executorch/../executorch/runtime/kernel/operator_registry.h:11,
from /pytorch/executorch/runtime/kernel/operator_registry.cpp:9:
In function 'char* strncpy(char*, const char*, size_t)',
inlined from 'void executorch::runtime::internal::make_kernel_key_string(executorch::runtime::Span<const executorch::runtime::TensorMeta>, char*)' at /pytorch/executorch/runtime/kernel/operator_registry.cpp:138:10:
/usr/include/x86_64-linux-gnu/bits/string_fortified.h:95:34: error: 'char* __builtin_strncpy(char*, const char*, long unsigned int)' output truncated before terminating nul copying 3 bytes from a string of the same length [-Werror=stringop-truncation]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the warning here was unhelpful IMO

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this just be memcpy(buf, "v1/", 3);? Or are we relying on the NUL byte that strcpy adds?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I completely rewrote this function in #8327, so watch out for merge conflicts (if mine lands first)

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yeah, thanks for the heads up, will be careful during rebase

@mergennachin

Copy link
Copy Markdown
ContributorAuthor
  • Ignore 'sign-compare' but created a follow-up issue Compile with -Wsign-compare flag #8149
  • Fixed an error that was erroring with -Werror=stringop-truncation
  • Modified the CONTRIBUTION.md file to build the size_test information

@facebook-github-bot

Copy link
Copy Markdown
Contributor

@mergennachin has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator.

@facebook-github-bot

Copy link
Copy Markdown
Contributor

@mergennachin has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator.

ET_SWITCH_SCALAR_OBJ_TYPES(val_type, ctx, name, CTYPE_VAL, [&] {
CTYPE_VAL val;
utils::extract_scalar(fill_value, &val);
ET_KERNEL_CHECK(

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think ET_KERNEL_CHECK will do the right thing in a lambda -- it returns from the lambda, not the operator

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

any suggestions on how to fix?

i think it's fine, since it will return void from the lambda, but sets context to be fail, with error code InvalidArgument.

ET_SWITCH_SCALAR_OBJ_TYPES(val_type, ctx, name, CTYPE_VAL, [&] {
CTYPE_VAL val;
utils::extract_scalar(fill_value, &val);
ET_KERNEL_CHECK(

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think ET_KERNEL_CHECK will do the right thing in a lambda -- it returns from the lambda, not the operator

Comment threadruntime/kernel/operator_registry.cpp Outdated
return;
}
strncpy(buf, "v1/", 3);
strcpy(buf, "v1/");

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the warning here was unhelpful IMO

Comment threadtest/build_size_test.sh Outdated
# shellcheck source=/dev/null
source "$(dirname "${BASH_SOURCE[0]}")/../.ci/scripts/utils.sh"

# Remove -Wno-sign-compare (https://github.com/pytorch/executorch/issues/8149)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

did you mean to put a TODO here?

@swolchok

Copy link
Copy Markdown
Contributor

@mergennachin do you need anything else from me on this one?

@mergennachin

mergennachin commented Feb 10, 2025

Copy link
Copy Markdown
ContributorAuthor

@mergennachin do you need anything else from me on this one?

@swolchok, @dbort

i don't think we have come to a resolution on errors on boolean errors:

https://github.com/pytorch/executorch/actions/runs/13123890485/job/36616081625?pr=8016

i can specialize for boolean cases, and use &&=

@swolchok

Copy link
Copy Markdown
Contributor

&&= does not exist; you'd need &=. IMO such a change would be clear uglification of the code only to suppress a warning

@mergennachin

Copy link
Copy Markdown
ContributorAuthor

such a change would be clear uglification of the code only to suppress a warning

But it's a legitimate warning, no? You can today pass in a random memory location and define it as "boolean" tensor, which will cause some undefined behavior.

unless you pass in UBSAN flag

@swolchok

swolchok commented Feb 10, 2025

Copy link
Copy Markdown
Contributor

I don't think the code change you are considering would address the issue you just raised above.

@mergennachin

Copy link
Copy Markdown
ContributorAuthor

Okay, I will suppress that error for now and create a follow-up issue to track it

@mergennachin
mergennachinforce-pushed the wall branch 3 times, most recently from 8b9425b to 0c82c8bCompareFebruary 11, 2025 01:32
@mergennachin
mergennachin marked this pull request as ready for review February 11, 2025 01:40
Comment threadCONTRIBUTING.md Outdated
Comment threadCONTRIBUTING.md Outdated
Comment threadtest/build_size_test.sh Outdated
@facebook-github-bot

Copy link
Copy Markdown
Contributor

@mergennachin has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator.

@mergennachin
mergennachin merged commit 4e6abf8 into mainFeb 11, 2025
@mergennachin
mergennachin deleted the wall branch February 11, 2025 02:31
b_shape_str.data());
tensor_shape_to_c_string(a_size_span).data(),
tensor_shape_to_c_string(b_size_span).data());
#endif

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

@swolchok

Copy link
Copy Markdown
Contributor

@mergennachin it seems suboptimal for us to enforce -Wall -Werror, but only in a CI job that runs only on trunk, as this will result in unnecessarily-delayed detection of broken trunk. could we perhaps have a pull-time CI job that builds with these flags?

@swolchok

Copy link
Copy Markdown
Contributor

e.g. #8314 promptly broke this on trunk because of -Werror

@mergennachin

Copy link
Copy Markdown
ContributorAuthor

@swolchok test-binary-size is a pull job

perhaps, in this #8314 case your base commit was old and it didn't catch during PR?

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ciflow/trunkCLA SignedThis label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed.topic: not user facing

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@mergennachin@swolchok@facebook-github-bot@digantdesai@dbort