fix(maild): email messages are sent infinitely #1658
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Hi there
First of all, I'd like to thank you for such a wonderful tool.
In my environment, email messages are sent infinitely when multiple alerts are detected in a short period of time.
The following is the mail related setting.
After debugging, I noticed that the position of
fp
used in GetAlertData ofread-alert.c
sometimes went to the beginning of a file.I further investigated and found that
fp
was changed when the forked child process exited afterOS_Sendmail
ofmaild.c
.Then, I found this issue. Looking at the answer, this is not a bug of libc.
https://sourceware.org/bugzilla/show_bug.cgi?id=23151
Here are some excerpts from the relevant section
http://pubs.opengroup.org/onlinepubs/9699919799/functions/V2_chap02.html#tag_15_05_01
After adding
fflush()
beforefork
, this problem no longer reproduces.Thanks.