-
Notifications
You must be signed in to change notification settings - Fork 0
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
Prepend "thread (%d)" to output from jl_print_task_backtraces()
#95
Conversation
Can you explain the idea behind this one? Is the new jl_task_backtraces printing multithreaded? I don't see any discussion of this in the issue you link to in the PR description: JuliaLang#51056. |
Or is it because you're now triggering this asynchronously, according to some conditions, and there's a chance that two threads would trigger it at the same time? EDIT: If it's the latter, i think maybe a better solution would be to add an optional parameter for an IO object to write this output to. That way we can write each one to a buffer, and then dump the whole thing in one nice message to datadog? (I think if you log a json line to datadog, it will make it all in one log message, rather than splitting it up. So you could print it like this: data = String(take!(io)) # or whatever
println("""{"message":$(repr(data))}""") and then it would be formatted much more nicely in datadog. |
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.
👍 The implementation here LGTM but i'm not sure i understand the purpose.
I should have explained better.
Because we're triggering this asynchronously, other threads are still running and could be logging things, which could result in other log messages interleaving with the backtraces. The approach we chose to address this interleaving problem was adding these prefixes. The individual task backtraces are already prefixed with As this is in C code, using an |
Mmm yeah, you're right, i forgot about that. The C code can write to file pointers just fine, but not IOBuffers. :/ But okay cool thanks yeah that explanation makes sense. |
PR Description
More backtrace prepending, this time to the text output by
jl_print_task_backtraces()
.This should be squashed with the following commits when we upgrade:
0457f8995eb49158adcab9b12d21d9d31e9e05d4
e015382634953445155c9fa4f51aba05235e8313
8f409da5c564d8fd9e9a2d0fe19235a710fedd09
Checklist
Requirements for merging:
port-to-*
labels that don't apply.