Skip to content

Conversation

@giuseppe
Copy link
Member

@giuseppe giuseppe commented Feb 2, 2026

do not return a negative value without an error.

Closes: #1977

do not return a negative value without an error.

Closes: containers#1977

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
@gemini-code-assist
Copy link

Summary of Changes

Hello @giuseppe, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request refines the error handling within the libcrun_container_create function to provide more robust and consistent error reporting during container setup. It addresses an issue where negative values might be returned without a clear error context and improves the validation of exit codes read from a pipe. The changes ensure that container creation failures are reported consistently using the crun_make_error function, leading to clearer diagnostics and better maintainability.

Highlights

  • Improved Error Handling: The logic for handling the return value of the read() system call has been enhanced to correctly identify cases where no bytes are read or an error occurs, changing the condition from ret < 0 to ret <= 0.
  • Robust Exit Code Validation: Added a new check to ensure that the read() operation successfully reads the expected number of bytes (sizeof(exit_code)) and that the exit_code itself is not a negative value, preventing internal inconsistencies.
  • Standardized Error Reporting: Modified the function to return a crun_make_error when container creation fails due to a non-zero exit code, aligning with the project's error reporting standards and avoiding the return of raw negative exit codes as error indicators.
  • Explicit Success Return: Explicitly returns 0 when the container creation is successful (i.e., exit_code == 0), clarifying the success path.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request fixes incorrect exit code handling in libcrun_container_create. The previous implementation could return a negative value without setting an error object, or a positive value on some error paths, which is inconsistent. The changes correctly handle the exit code from the container's init process, ensuring that 0 is returned on success and a proper error is propagated on failure. The patch also improves error handling for pipe communication by checking for partial reads and EOF, making the logic more robust. Overall, this is a good fix that improves correctness and consistency.

libcrun_error_t tmp_err = NULL;
libcrun_container_delete (context, def, context->id, true, &tmp_err);
crun_error_release (&tmp_err);
return crun_make_error (err, 0, "error creating container");

Choose a reason for hiding this comment

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

medium

The error message is a bit generic. Including the exit_code from the container process would make it more informative for debugging purposes.

      return crun_make_error (err, 0, "error creating container: exit code %d", exit_code);

@packit-as-a-service
Copy link

TMT tests failed. @containers/packit-build please check.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

libcrun_container_create() returns a negative number but no error has been created

1 participant