Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

"clang/docs/LibTooling.rst" example code causing crash when invalid paramter given #97983

Open
nickhuang99 opened this issue Jul 8, 2024 · 2 comments · May be fixed by #98129
Open

"clang/docs/LibTooling.rst" example code causing crash when invalid paramter given #97983

nickhuang99 opened this issue Jul 8, 2024 · 2 comments · May be fixed by #98129
Labels
clang Clang issues not falling into any other category documentation good first issue https://github.com/llvm/llvm-project/contribute

Comments

@nickhuang99
Copy link

For people new to clang like myself, the first tutorial is very essential to learn. That is why those example code from tutorial clang/docs/LibTooling.rst should be very solid. Unfortunately a basic error handling always causes core dump which seems scary to a rookie developer.
The following snippet causes core dump when command line parameter is invalid because Error returned from ExpectedParser.takeError() unhandled.

auto ExpectedParser = CommonOptionsParser::create(argc, argv, MyToolCategory);
if (!ExpectedParser) {
llvm::errs() << ExpectedParser.takeError();
return 1;
}
`

A simple fix like this
toString(ExpectedParser.takeError());
can fix this because toString will call handleAllErrors before formatting string result.
It maybe seems trivial, but I believe the Hello World is giving very important impression for all new ones to clang.

@github-actions github-actions bot added the clang Clang issues not falling into any other category label Jul 8, 2024
@shafik shafik added the good first issue https://github.com/llvm/llvm-project/contribute label Jul 8, 2024
@llvmbot
Copy link
Collaborator

llvmbot commented Jul 8, 2024

Hi!

This issue may be a good introductory issue for people new to working on LLVM. If you would like to work on this issue, your first steps are:

  1. Check that no other contributor has already been assigned to this issue. If you believe that no one is actually working on it despite an assignment, ping the person. After one week without a response, the assignee may be changed.
  2. In the comments of this issue, request for it to be assigned to you, or just create a pull request after following the steps below. Mention this issue in the description of the pull request.
  3. Fix the issue locally.
  4. Run the test suite locally. Remember that the subdirectories under test/ create fine-grained testing targets, so you can e.g. use make check-clang-ast to only run Clang's AST tests.
  5. Create a Git commit.
  6. Run git clang-format HEAD~1 to format your changes.
  7. Open a pull request to the upstream repository on GitHub. Detailed instructions can be found in GitHub's documentation. Mention this issue in the description of the pull request.

If you have any further questions about this issue, don't hesitate to ask via a comment in the thread below.

@llvmbot
Copy link
Collaborator

llvmbot commented Jul 8, 2024

@llvm/issue-subscribers-good-first-issue

Author: nick huang (nickhuang99)

For people new to clang like myself, the first tutorial is very essential to learn. That is why those example code from tutorial _clang/docs/LibTooling.rst_ should be very **solid**. Unfortunately a basic error handling always causes core dump which seems scary to a rookie developer. The following snippet causes core dump when command line parameter is invalid because **Error** returned from `ExpectedParser.takeError()` unhandled.

auto ExpectedParser = CommonOptionsParser::create(argc, argv, MyToolCategory);
if (!ExpectedParser) {
llvm::errs() &lt;&lt; ExpectedParser.takeError();
return 1;
}
`

A simple fix like this
toString(ExpectedParser.takeError());
can fix this because toString will call handleAllErrors before formatting string result.
It maybe seems trivial, but I believe the Hello World is giving very important impression for all new ones to clang.

Rajveer100 added a commit to Rajveer100/llvm-project that referenced this issue Jul 9, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
clang Clang issues not falling into any other category documentation good first issue https://github.com/llvm/llvm-project/contribute
Projects
None yet
4 participants