Syntax Error Reported During upb.c Compilation
Symptom
An error occurs when the upb.c file is compiled during TF-Serving compilation, and the message "'__builtin_strncpy' specified bound 127 equals destination size [-Werror=stringop-truncation]" is displayed. The details are as follows:
WARNING: errors encountered while analyzing target '//tensorflow_serving/model_servers:tensorflow_model_server': it will not be built
In file included from /usr/include/string.h:519,
from external/upb/upb/upb.h:16,
from external/upb/upb/upb.c:2:
In function 'strncpy',
inlined from 'upb_status_seterrmsg' at external/upb/upb/upb.c:40:3:
/usr/include/bits/string_fortified.h:95:10: error: '__builtin_strncpy' specified bound 127 equals destination size [-Werror=stringop-truncation]
95 | return __builtin___strncpy_chk (__dest, __src, __len,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
96 | __glibc_objsize (__dest));
| ~~~~~~~~~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
Target //tensorflow_serving/model_servers:tensorflow_model_server failed to build
Key Process and Cause Analysis
The strncpy function is incorrectly used, and the TF-Serving does not update the upb version in a timely manner.
Conclusion and Solution
- Search for strncpy(status->msg, msg, sizeof(status->msg));.
grep -nr "strncpy(status->msg, msg, sizeof(status->msg));"
- Replace it with strncpy(status->msg, msg, sizeof(status->msg)-1);.
find . -type f -name "*.c" -o -name "*.h" | xargs grep -l 'strncpy(status->msg, msg, sizeof(status->msg));' | xargs sed -i 's/strncpy(status->msg, msg, sizeof(status->msg));/strncpy(status->msg, msg, sizeof(status->msg)-1);/g'
Parent topic: Troubleshooting