-
Notifications
You must be signed in to change notification settings - Fork 8
lua: add healthchecking and file searchers exclusion #108
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Summary of Changes
Hello @adamgreloch, 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 introduces significant enhancements to Lua's robustness and integration capabilities, primarily by adding an opt-in healthchecking mechanism for the main loop and providing a configurable way to handle unhandled panics more gracefully in multithreaded environments. These changes aim to improve the stability and diagnosability of Lua applications, especially when embedded in larger systems.
Highlights
- Opt-in Healthchecking: I've implemented an opt-in healthchecking mechanism for the Lua main loop. This feature is designed to detect hangs, particularly those occurring during long-running C-call executions, by allowing an external entity to query the Lua VM's responsiveness.
- MT-Safe Heartbeat API: To support the healthchecking, I've exposed new, thread-safe C API functions:
lua_sendheartbeatrequest
andlua_getheartbeatresponse
. These functions enable external components to safely request and receive heartbeat responses from the Lua VM, facilitating robust hang detection. - Configurable Panic Handling: I've added an opt-in feature that allows replacing the default
abort()
behavior withpthread_exit()
when an unhandled Lua panic occurs. This is crucial for multithreaded applications, as it prevents the entire process from crashing due to a single thread's unhandled panic, allowing other threads to continue execution. - Internal Name Clash Resolution: As part of these changes, I've resolved a potential name clash by renaming the internal
priority
array tolpriority
insrc/lparser.c
. This prevents conflicts withpriority()
functions that might be included fromsys/threads.h
.
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 in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command>
or @gemini-code-assist <command>
. Below is a summary of the supported commands.
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 issue 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 is currently in preview and 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 to provide feedback.
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
-
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. ↩
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code Review
The pull request introduces healthchecking and replaces abort()
with pthread_exit()
on panic. The review identifies a critical bug in the use of pthread_exit
that leads to undefined behavior, and uninitialized variables in the health check feature. There are also recommendations to fix typos in comments.
JIRA: NIL-726
a95b476
to
78b3dba
Compare
78b3dba
to
ecfb6b2
Compare
Description
Adds opt-in main loop healthchecking useful for in-C-call hang detection. It also adds an opt-in exclusion of file searchers to further harden the interpreter
Motivation and Context
Types of changes
How Has This Been Tested?
Checklist:
Special treatment