mirror of
https://github.com/deepseek-ai/DeepEP.git
synced 2026-11-05 00:47:32 +00:00
[GH-ISSUE #480] [bug]Missing some critical error log when timeout #309
Labels
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
deepseek-ai/DeepEP#309
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @huakainomore on GitHub (Nov 5, 2025).
Original GitHub issue: https://github.com/deepseek-ai/DeepEP/issues/480
1. Description
I encountered some errors just like this. Rdma_rank 1 have this error, the sender coordinator and receiver both have timeout error.
head == tail, it seem to be related to Forwarder.but both the forwarder and Sender does not, we can't know the forwarder or sender has error or not ?
I think it's related to trap(). After trap being called by on warp, The execution of the kernel is aborted, if other warp's print buffer can't be flushed to output, it may be lost.
2. Verification
Just to verify the phenomenon exist, the program can't output the all warp role, we can only see few warp output in same SM. I add some sleep before trap, it seem all warp have output, But it may not be guaranteed.
So is there a way to ensure that all warp outputs are guaranteed ?
@gangxie112 commented on GitHub (Nov 6, 2025):
@sphish Could help have a look at this?
@sphish commented on GitHub (Nov 6, 2025):
You can try replacing
trap()withwhile(true)— this might help you output more logs.@huakainomore commented on GitHub (Nov 6, 2025):
Thanks for replay very much ! Will there be some fix to ensure that all warp outputs are guaranteed ?
@gangxie112 commented on GitHub (Nov 6, 2025):
I don't think it could work. Because this is running on our production env. When inifite loop,we have to wait for some other timeout triggered, like pytorch nccl-watchdog, which usually takes more time.
@sphish commented on GitHub (Nov 6, 2025):
I’m not sure if there’s a better solution — in fact, this issue often troubles me as well.
Debugging in a production environment is very challenging; it would be best if you could reproduce this problem using a unit test.
@huakainomore commented on GitHub (Nov 7, 2025):
I add some wait before trap()
add break for lane 0 and channel 5 kForwarderCoordinator to make timeout
the origin result the rdma_rank 0 only have RDMA sender coordinator timeout, after add wait before trap(), the all WarpRole will have all timeout log because the double NUM_TIMEOUT_CYCLES wait time.
I think this is a fix for better locate problem, the double NUM_TIMEOUT_CYCLES wait time may can help other WarpRole output.
@sphish
@1998zxn commented on GitHub (Nov 10, 2025):
I noticed that the CPU timeout and GPU timeout cycles were set in the configuration file. After We changed trap () to while(true), We increased the CPU timeout, which also helped us print all timeout logs before exiting the program.
@huakainomore commented on GitHub (Nov 11, 2025):
Hi, thanks for reply! i have a question for it, if use cached_notify in internode_dispatch, it will not check CPU timeout, after replace trap() to while(true), the program wil nerver exiting?