由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 怎么在不中断程序的情况下fix memory leak?
相关主题
memory leaking问题都从那些方面入手查找原因?关于memory leak detection问题,面试中如何回答?
求助:面试题今天一个trading firm的面试题
内存泄露题一般怎么回答啊?BB onsite 面经
how to detect memory leak问个内存泄露的问题
问道C内存的题?bloomberg电面
有个面试对C语言要求很高,而且注重debugging能力请问一下啥是static/dynamic heap?
google 电面 software engr in testA malloc/free question using C/C++
刚电面完BLOOMBERGCarerCup 书里面的关于memory的一道题
相关话题的讨论汇总
话题: memory话题: log话题: leak话题: 程序话题: fix
进入JobHunting版参与讨论
1 (共1页)
t*******i
发帖数: 4960
1
大家给点提示?
f****4
发帖数: 1359
2
你的意思,应该是不中断程序的情况下找到那里有memory leak吧?
要fix的话总是要重新编译,重新run的啊
code review+log
t*******i
发帖数: 4960
3
code review ,如果是几十万行的代码。。。
log,具体需要记录什么才行?如果设计的时候没有记录内存分配释放的信息呢?
这两个其实我都说了,面试的人明显不满意。。。也不能单独设立一套系统来测试,因
为问题可能是跟运行环境相关的。
l*********8
发帖数: 4642
4
什么语言什么操作系统?
t*******i
发帖数: 4960
5
linux c
f****4
发帖数: 1359
6
log是让你用来分析系统到底在做什么,很多时候memory leak发生在一些特定的边界条
件没处理的情况下面。那么你的log就要记录有些边界条件发生了。那么在持续memory
leak的时候,你就能看到log里面有连续的边界条件发生。
code review不是让你把整个系统review。你应该假设之前系统的release没有memory
leak,新增代码导致的问题。这个假设绝大多数情况是成立的。那么你分析log,知道
系统一直在run哪些模块,再去看那些模块里面新增代码是否有问题。
至于你说的面试的人明显不满意,是不是你理解错人家意思了啊?
这么说吧,不中断程序,那是否允许你备份数据然后在别的机器上run&debug这个程序
?如果可以,重载new/malloc,delete/free,把所有memory 操作&地址log出来,一比
较就知道哪些没释放了。
或者,直接用代码分析工具分析。

【在 t*******i 的大作中提到】
: code review ,如果是几十万行的代码。。。
: log,具体需要记录什么才行?如果设计的时候没有记录内存分配释放的信息呢?
: 这两个其实我都说了,面试的人明显不满意。。。也不能单独设立一套系统来测试,因
: 为问题可能是跟运行环境相关的。

t*******i
发帖数: 4960
7
当时是第一次面试,一下子蒙了,没想到这么多。感觉对方就是说,有个设备在客户那
里,现在发现问题了,你可以远程连过去。程序不能中断,客户要用,所以不能debug
。单独安装一套系统来debug的话,由于环境不一样,不一定能发现问题,所以要是得
去诊断客户那套运行的系统,然后我脑子就不work了。我说检查代码,对方说小程序还
好,几十万行的代码你怎么检查。我问有没有log,对方反问我什么log。
反正我就晕菜了。

memory

【在 f****4 的大作中提到】
: log是让你用来分析系统到底在做什么,很多时候memory leak发生在一些特定的边界条
: 件没处理的情况下面。那么你的log就要记录有些边界条件发生了。那么在持续memory
: leak的时候,你就能看到log里面有连续的边界条件发生。
: code review不是让你把整个系统review。你应该假设之前系统的release没有memory
: leak,新增代码导致的问题。这个假设绝大多数情况是成立的。那么你分析log,知道
: 系统一直在run哪些模块,再去看那些模块里面新增代码是否有问题。
: 至于你说的面试的人明显不满意,是不是你理解错人家意思了啊?
: 这么说吧,不中断程序,那是否允许你备份数据然后在别的机器上run&debug这个程序
: ?如果可以,重载new/malloc,delete/free,把所有memory 操作&地址log出来,一比
: 较就知道哪些没释放了。

g*****k
发帖数: 623
8
对方想让你展开谈谈怎么用log来发现问题

debug

【在 t*******i 的大作中提到】
: 当时是第一次面试,一下子蒙了,没想到这么多。感觉对方就是说,有个设备在客户那
: 里,现在发现问题了,你可以远程连过去。程序不能中断,客户要用,所以不能debug
: 。单独安装一套系统来debug的话,由于环境不一样,不一定能发现问题,所以要是得
: 去诊断客户那套运行的系统,然后我脑子就不work了。我说检查代码,对方说小程序还
: 好,几十万行的代码你怎么检查。我问有没有log,对方反问我什么log。
: 反正我就晕菜了。
:
: memory

f****4
发帖数: 1359
9
要不,你给面试的人发个email follow一下,看看他到底想问啥,想得到怎么样的回答
。如果人家比较nice给你feedback的话和我们分享一下。

debug

【在 t*******i 的大作中提到】
: 当时是第一次面试,一下子蒙了,没想到这么多。感觉对方就是说,有个设备在客户那
: 里,现在发现问题了,你可以远程连过去。程序不能中断,客户要用,所以不能debug
: 。单独安装一套系统来debug的话,由于环境不一样,不一定能发现问题,所以要是得
: 去诊断客户那套运行的系统,然后我脑子就不work了。我说检查代码,对方说小程序还
: 好,几十万行的代码你怎么检查。我问有没有log,对方反问我什么log。
: 反正我就晕菜了。
:
: memory

t*******i
发帖数: 4960
10
除了看代码和log,另设系统来debug外,还有其他的好方法吗? 当时我的感觉是对方
觉得我的提议都不和他的意。。。而且那意思是,客户在那里等这呢,你得马上解决。

【在 g*****k 的大作中提到】
: 对方想让你展开谈谈怎么用log来发现问题
:
: debug

相关主题
有个面试对C语言要求很高,而且注重debugging能力关于memory leak detection问题,面试中如何回答?
google 电面 software engr in test今天一个trading firm的面试题
刚电面完BLOOMBERGBB onsite 面经
进入JobHunting版参与讨论
t*******i
发帖数: 4960
11
这个,还是算了,当时我们的chemical就不怎么对。
我后来发现他问的问题好像大都可以从beginning linux porgramming里面找到答案,
里面谈到用valgrind 诊断 memory leak,我怀疑是不是有工具可以做这个。如果是
java的话,好像可以从虚拟机里得到memory 分配的情况。

【在 f****4 的大作中提到】
: 要不,你给面试的人发个email follow一下,看看他到底想问啥,想得到怎么样的回答
: 。如果人家比较nice给你feedback的话和我们分享一下。
:
: debug

h**********8
发帖数: 267
12
mark
P**********c
发帖数: 3417
13
run valgrind这个一般的公司都是会做的。不过这个对自己管理的mempool沒有用。

【在 t*******i 的大作中提到】
: 这个,还是算了,当时我们的chemical就不怎么对。
: 我后来发现他问的问题好像大都可以从beginning linux porgramming里面找到答案,
: 里面谈到用valgrind 诊断 memory leak,我怀疑是不是有工具可以做这个。如果是
: java的话,好像可以从虚拟机里得到memory 分配的情况。

d*******d
发帖数: 2050
14
可那也是inhouse test用的.
也没可能远程在客户那边不中断程序的情况下run阿.而且valgrind慢死了.
我想的是,suspend那边程序,然后gdb load那个process id,
然后呢?什么叫fix memory leak?手动release memory?如果这里头有自己定义管理的
mempool,且有相应的function到是有可能

【在 P**********c 的大作中提到】
: run valgrind这个一般的公司都是会做的。不过这个对自己管理的mempool沒有用。
c****p
发帖数: 6474
15
valgrind不是做这个的么

memory

【在 f****4 的大作中提到】
: log是让你用来分析系统到底在做什么,很多时候memory leak发生在一些特定的边界条
: 件没处理的情况下面。那么你的log就要记录有些边界条件发生了。那么在持续memory
: leak的时候,你就能看到log里面有连续的边界条件发生。
: code review不是让你把整个系统review。你应该假设之前系统的release没有memory
: leak,新增代码导致的问题。这个假设绝大多数情况是成立的。那么你分析log,知道
: 系统一直在run哪些模块,再去看那些模块里面新增代码是否有问题。
: 至于你说的面试的人明显不满意,是不是你理解错人家意思了啊?
: 这么说吧,不中断程序,那是否允许你备份数据然后在别的机器上run&debug这个程序
: ?如果可以,重载new/malloc,delete/free,把所有memory 操作&地址log出来,一比
: 较就知道哪些没释放了。

t*******i
发帖数: 4960
16
gdb process id 有对客户影响吗?我记得我当时提到debug,对方很坚定地说,不能debug,客户程序要继续工作。
手动release memory有人根我提过,以前做网络系统集成方面,但是不会编程序,从另 外的角度看问题。我也有点怀疑这个是不是他想听到的,先救火,不行就定时手工释放,稳住客户再说。
如果有自己定义管理的mempool,且有相应的function到是有可能。能具体说说做法吗?

【在 d*******d 的大作中提到】
: 可那也是inhouse test用的.
: 也没可能远程在客户那边不中断程序的情况下run阿.而且valgrind慢死了.
: 我想的是,suspend那边程序,然后gdb load那个process id,
: 然后呢?什么叫fix memory leak?手动release memory?如果这里头有自己定义管理的
: mempool,且有相应的function到是有可能

t*******i
发帖数: 4960
17
如果别的功能都正常,就是有memory leak,定时手工释放了也算解决问题了吧?
不过即使自己做的mempool也不好判断内存到底有没有被使用吧?尤其多线程的情况下。
不会是说在gbd里看哪些内存在用,然后自己来做吧。。。
f****4
发帖数: 1359
18
valgrind没怎么用过,如果我的主程序有while(1),一直在run,valgrind能够实时
report多少memory没释放么?
gdb p pid会把系统暂停的
自己管理mempool的话,如果可以手工释放memory的话,那么你的系统必定已经知道这
些memory是用完没有释放了,那样的话,还要你手工释放做啥?

【在 c****p 的大作中提到】
: valgrind不是做这个的么
:
: memory

t*******i
发帖数: 4960
19
那还是解决不了问题啊。
还是只能code review + log啊?
r*******n
发帖数: 344
20
我觉得如何找出泄露的模块和问题的root cause可能是面试官最想讨论的吧;然后就是
如何fix这个问题,他要求在系统进程或线程运行的过程中解决。
第一个问题,log应该是可以解决的,但要仔细地说说如何log,如果是写log太多,会影
响系统性能。可以自己设计系统内存监控程序,程序平时不写log,只做统计性的监控。
当某个模块在内存使用上behavior出了异常,它才把记录下的结果写入log。触发写log
的条件可以自己设计,也可以由用户的命令主动来实现。这个在产品卖出去之前,就应
该设计好的。
第二个问题,如何fix,我也很想了解一下。对于linux kernel module,如何可以fix问
题而不影响运行,做到绝对地不影响似乎很难?另外,如果是需要fix的是中断执行程序
,怎么办?

【在 t*******i 的大作中提到】
: 那还是解决不了问题啊。
: 还是只能code review + log啊?

相关主题
问个内存泄露的问题A malloc/free question using C/C++
bloomberg电面CarerCup 书里面的关于memory的一道题
请问一下啥是static/dynamic heap?Windows下多个DLL之间memory allocation问题 (转载)
进入JobHunting版参与讨论
t*******i
发帖数: 4960
21
这个职位确实是要求懂 linux kernel,看来还是我功力不够啊。
当时确实是问到log里面记什么,我觉得你的回答应该很对了。
期待怎么fix的答案早日出现。

会影
控。
log
fix问
程序

【在 r*******n 的大作中提到】
: 我觉得如何找出泄露的模块和问题的root cause可能是面试官最想讨论的吧;然后就是
: 如何fix这个问题,他要求在系统进程或线程运行的过程中解决。
: 第一个问题,log应该是可以解决的,但要仔细地说说如何log,如果是写log太多,会影
: 响系统性能。可以自己设计系统内存监控程序,程序平时不写log,只做统计性的监控。
: 当某个模块在内存使用上behavior出了异常,它才把记录下的结果写入log。触发写log
: 的条件可以自己设计,也可以由用户的命令主动来实现。这个在产品卖出去之前,就应
: 该设计好的。
: 第二个问题,如何fix,我也很想了解一下。对于linux kernel module,如何可以fix问
: 题而不影响运行,做到绝对地不影响似乎很难?另外,如果是需要fix的是中断执行程序
: ,怎么办?

f****4
发帖数: 1359
22
这里要是回答log的话,我们得假设,系统已经实现了比较好的log功能,就像
roamersun说的那样。
如果面的人回答说“我们用的默认的malloc和free,系统完全没有log,你不能中断当
前程序,无法在本地重现该问题”——那除了代码分析工具就没如何办法可以解决了。
linux程序能否做到在某个时间点让程序从使用A动态库转换成B动态库啊?
假设A包含了原来有memory leak的函数fun()
B是fix 了 memory leak的函数fun()
对了,lz这是申请的啥职位,啥级别啊?
t*******i
发帖数: 4960
23
啥职位就不足以道了,我看要求懂tcp/ip和linux kernel,这头一
个我懂,后一个是全不懂,本着70%(学历咱也够)沾边就投的原则就投了。
其实操作系统是我一个老板的强项啊,我就这么没出息了。
这个问题我答不出来一直耿耿于怀,所以跑来问一下。

【在 f****4 的大作中提到】
: 这里要是回答log的话,我们得假设,系统已经实现了比较好的log功能,就像
: roamersun说的那样。
: 如果面的人回答说“我们用的默认的malloc和free,系统完全没有log,你不能中断当
: 前程序,无法在本地重现该问题”——那除了代码分析工具就没如何办法可以解决了。
: linux程序能否做到在某个时间点让程序从使用A动态库转换成B动态库啊?
: 假设A包含了原来有memory leak的函数fun()
: B是fix 了 memory leak的函数fun()
: 对了,lz这是申请的啥职位,啥级别啊?

s*****y
发帖数: 897
24
Fortinet or Juniper?

【在 t*******i 的大作中提到】
: 啥职位就不足以道了,我看要求懂tcp/ip和linux kernel,这头一
: 个我懂,后一个是全不懂,本着70%(学历咱也够)沾边就投的原则就投了。
: 其实操作系统是我一个老板的强项啊,我就这么没出息了。
: 这个问题我答不出来一直耿耿于怀,所以跑来问一下。

r*******n
发帖数: 344
25
没错,当面试官提出了这个问题,我们应该通过交流去了解他到底会给出什么样的条件
和背景。如果真的是泛泛而谈,那就只能自己cover所有的可能了。然后再建议如果你是
产品的设计者,你会怎么做才会使这个问题暴露时更容易定位root cause.
你说的动态库其实类似于打补丁的方法,找到要替换函数的地址,然后替换。但是对于
中断处理函数恐怕不行,有没有可行的办法?

【在 f****4 的大作中提到】
: 这里要是回答log的话,我们得假设,系统已经实现了比较好的log功能,就像
: roamersun说的那样。
: 如果面的人回答说“我们用的默认的malloc和free,系统完全没有log,你不能中断当
: 前程序,无法在本地重现该问题”——那除了代码分析工具就没如何办法可以解决了。
: linux程序能否做到在某个时间点让程序从使用A动态库转换成B动态库啊?
: 假设A包含了原来有memory leak的函数fun()
: B是fix 了 memory leak的函数fun()
: 对了,lz这是申请的啥职位,啥级别啊?

t*******i
发帖数: 4960
26
介绍一下有哪些代码分析工具?我从来没用过。。。

【在 f****4 的大作中提到】
: 这里要是回答log的话,我们得假设,系统已经实现了比较好的log功能,就像
: roamersun说的那样。
: 如果面的人回答说“我们用的默认的malloc和free,系统完全没有log,你不能中断当
: 前程序,无法在本地重现该问题”——那除了代码分析工具就没如何办法可以解决了。
: linux程序能否做到在某个时间点让程序从使用A动态库转换成B动态库啊?
: 假设A包含了原来有memory leak的函数fun()
: B是fix 了 memory leak的函数fun()
: 对了,lz这是申请的啥职位,啥级别啊?

f****4
发帖数: 1359
27
我听说过 coverity,没用过

【在 t*******i 的大作中提到】
: 介绍一下有哪些代码分析工具?我从来没用过。。。
k****n
发帖数: 1334
28
这哥们态度不好,不过应该是log这条路走下去了

debug

【在 t*******i 的大作中提到】
: 当时是第一次面试,一下子蒙了,没想到这么多。感觉对方就是说,有个设备在客户那
: 里,现在发现问题了,你可以远程连过去。程序不能中断,客户要用,所以不能debug
: 。单独安装一套系统来debug的话,由于环境不一样,不一定能发现问题,所以要是得
: 去诊断客户那套运行的系统,然后我脑子就不work了。我说检查代码,对方说小程序还
: 好,几十万行的代码你怎么检查。我问有没有log,对方反问我什么log。
: 反正我就晕菜了。
:
: memory

1 (共1页)
进入JobHunting版参与讨论
相关主题
CarerCup 书里面的关于memory的一道题问道C内存的题?
Windows下多个DLL之间memory allocation问题 (转载)有个面试对C语言要求很高,而且注重debugging能力
关于内存重新分配的基础问题。google 电面 software engr in test
我最喜欢问的问题,怎样检查out of memory刚电面完BLOOMBERG
memory leaking问题都从那些方面入手查找原因?关于memory leak detection问题,面试中如何回答?
求助:面试题今天一个trading firm的面试题
内存泄露题一般怎么回答啊?BB onsite 面经
how to detect memory leak问个内存泄露的问题
相关话题的讨论汇总
话题: memory话题: log话题: leak话题: 程序话题: fix