---
title: upb.c编译语法报错
description: "编译TF-Serving时upb.c文件编译出错，提示“'__builtin_strncpy' specified bound 127 equals destination size [-Werror=stringop-truncation]”。详细信息如下所示："
url: https://www.hikunpeng.com/document/detail/zh/SRA/ecosystemEnable/TensorFlowServing/kunpengtfserving_02_0017.html
sourcePath: /source/zh/SRA/ecosystemEnable/TensorFlowServing/kunpengtfserving_02_0017.html
indexId: 032c74f4178392c4d213dd23999dbe4e3e863e513f08e0e22b9faf1a31da566778
---
# upb.c编译语法报错

#### 问题现象描述

编译TF-Serving时upb.c文件编译出错，提示“'__builtin_strncpy' specified bound 127 equals destination size [-Werror=stringop-truncation]”。详细信息如下所示：

```
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
```


#### 关键过程、根本原因分析

strncpy函数误用，TF-Serving未及时更新upb版本。


#### 结论、解决方案及效果

1. 搜索strncpy(status->msg, msg, sizeof(status->msg));。
  1 grep -nr "strncpy(status->msg, msg, sizeof(status->msg));"

2. 替换为strncpy(status->msg, msg, sizeof(status->msg)-1);。
  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'
