client作为子进程时出错退出导致别的子进程Hang住
Created by: wangxicoding
多个reader子进程连接不同的serving,当其中一个serving出错后(如显存超了),可能导致与之相连的reader子进程出错exit(-1)。 https://github.com/PaddlePaddle/Serving/blob/21b998fa5cdb2efed045a7379cb366476366b683/core/general-client/src/general_model.cpp#L364-L367 用多进程共享的Queue、Pipe时,如果子进程使用了锁或者信号量等共享对象,杀掉进程可能导致其它进程死锁。
导致与之相连的client获取inference结果出错,则client所在的子进程exit(-1)退出挂了。
接着导致程序所使用的Queue出错死锁,出现图中的名场面。。
为防止reader一个子进程挂了,程序死锁的情况,需要将上面代码中的exit(-1)改成返回错误码,或者抛出异常,供调用端处理