[ 
https://issues.apache.org/jira/browse/HDFS-7010?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14163115#comment-14163115
 ] 

Haohui Mai commented on HDFS-7010:
----------------------------------

bq. If the different version of libstdc++ is ABI compatible, it should be fine, 
otherwise, other troubles like core dump when throw/catch exception will come 
first before printing the call stack.

C++ does *not* standardise name mangling, which means that there is no 
guarantees that mangling will stay the same. Basically you're making the 
assumption that the demangler and the library is compiled by the exact same 
compiler, in most case this is not true.

bq. From the current experience of using libhdfs3 in our production, if the 
function is not inlined, it can be printed in MacOS with CLang, RHEL5/6 with 
GCC 4.4.2

Did you ever try a more modern compiler that turns on link time optimization? 
This is turned on by default by MSVC. You can turn it on with llvm and recent 
versions of gcc.

Just to reiterate on the previous comments, there are only public symbols 
available in the library. I'm skeptical that you can extract enough information 
without doing it with the full DWARF information.

bq. Printing the call stack is not only useful for debug, but also for the 
writing log. If the customer report an issue with the call stack, it will save 
a lot of time to find the root cause. It benefit both developer and users.

Can you just walk the stack and get the function name on your side? As I 
pointed out earlier, there won't be enough symbols to get the names.

bq. I know that printing call stack is not a good way to do such work and has 
bad portability. Based on the current test and use experience, it does not 
introduce trouble yet but provide much benefit. 

My point is that it is very dangerous to depend on compiler-specific behaviors. 
The mileage of your statements can vary a lot -- it might work on your laptop, 
or on some specific deployments. On other deployments it might not work at all 
or simply crash the whole program.

Obviously you have way more experience supporting libhdfs3 than any of us, thus 
I might underappreciate the debuggability. However, I'm quite concerned that 
this particular feature will shoot the developers on their our foot. This is 
dangerous enough and it raises a clear red flag to me.

My take is to focus on the core features and to exclude this feature for now, 
at least at the first release. Maybe we can continue to investigate on follow 
up jiras once we have more experience on supporting the library in production 
environments.

> boot up libhdfs3 project
> ------------------------
>
>                 Key: HDFS-7010
>                 URL: https://issues.apache.org/jira/browse/HDFS-7010
>             Project: Hadoop HDFS
>          Issue Type: Sub-task
>          Components: hdfs-client
>            Reporter: Zhanwei Wang
>            Assignee: Colin Patrick McCabe
>         Attachments: HDFS-7010-pnative.003.patch, 
> HDFS-7010-pnative.004.patch, HDFS-7010-pnative.004.patch, HDFS-7010.patch
>
>
> boot up libhdfs3 project with CMake, Readme and license file.
> Integrate google mock and google test



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to