问题类型
Bug
你是否在TF nightly版本中复现了这个bug?
是的
问题来源
source
Tensorflow版本
tf2.12
自定义代码
否
OS平台和发行版
- 无响应*
移动设备
- 无响应*
Python版本
- 无响应*
Bazel版本
- 无响应*
GCC/编译器版本
- 无响应*
CUDA/cuDNN版本
- 无响应*
GPU型号和内存
- 无响应*
当前行为?
Pointer `next_iter` from function `PropagatorState::FrameState::IncrementIteration` is passed
as the 1st parameter into `ActivateLoopInvs` where it is passed as the 1st parameter into
`AdjustOutstandingOpsLocked`, then inside this function it is passed into `CleanupIterations`
where it is deleted.
Then in `PropagatorState::FrameState::IncrementIteration` this possibly freed pointer is used
in `return`-statement.
This behavior was introduced by https://github.com/tensorflow/tensorflow/commit/ae2a0e5c473f2a575767262021c26852d22886f8.
Before this commit, no `return` was performed on the possibly freed pointer.
重现问题的独立代码
Bug was found by Svace static analysis tool.
相关日志输出
- 无响应*
9条答案
按热度按时间rjjhvcjd1#
这段代码是TensorFlow中的一个片段,主要涉及到迭代器状态的初始化、激活、调整和清理。具体来说,它包括以下几个部分:
这段代码主要用于在TensorFlow中实现分布式计算,通过迭代器状态来管理计算图中的节点和操作。
lmvvr0a82#
为了解决propagator_state.cc中的"use after free"错误,你需要确保由next_iter指向的内存在被删除或访问后不会被删除。
实现这一点的一种方法是修改代码,将next_iter的所有权转移到另一个负责管理其生命周期的对象或函数。例如,你可以使用智能指针,如std::unique_ptr或std::shared_ptr来自动管理next_iter的内存。
另一种方法是修改代码以确保在next_iter被删除后可能访问或修改它的任何函数都被修改,以防止这种情况发生。这可能包括在访问指针之前添加检查以确保指针有效,或者修改程序的控制流以确保在指针被删除后不访问它。
在任何情况下,都应仔细审查和测试修改后的代码,以确保它是正确的,并且没有引入新的错误。此外,重要的是要理解错误的根源,并解决可能导致错误的根本设计或架构问题,以防止将来出现类似的问题。我可以处理这个问题吗?@tiruk007
nafvub8i3#
$x_{1}e^{0}f_{1}x$
pkmbmrz74#
我该如何继续进行?我在我的仓库中对代码进行了一些更改,并提交了pull request。但是它在TensorFlow主仓库的pull request页面上不可见。审查者如何查看并接受我的pull request?bhagirath20@daa460d . @mihaimaruseac@tiruk007
6yoyoihd5#
通过OSS VRP报告。
8ftvxx2r6#
感谢@PaDarochek。
@bhagirath20 您需要针对TF仓库发起PR,而不是针对您自己的仓库。
t5fffqht7#
Btw, this PR does not fix use after free. The function calling
CleanupIterations
will still have an ordinary (non unique ptr) pointer that is freed. Also, now the pointer is always deleted that is worse than before. Moreover, the code does not compile. I composed a hello world example for this:mkshixfv8#
我猜修复需要熟悉TensorFlow代码库的维护者进行一些架构上的更改。
eufgjt7s9#
顺便说一下,这段文字似乎是由ChatGPT生成的;)