title: Some questions about protobuf
body: <p>We are building a RTB(real time bidding) platform. Using nginx as http server, the bidder is writen in lua, google protocol buffer for serializing data and Zlog for logs. After test runs, we got three error messages in the nginx error log:</p>
  
  <ol>
  <li><p>"[libprotobuf Error, google/protobuf/wire_format.cc:1053]
  String field contains invalid UTF-8 data when parsing a protocol buffer.
  Use the 'bytes' type if you intend to send raw bytes."
  So we went back to check the source code of protocol buffer, and found that this check is controlled by a macro(-DNDEBUG: it means NOT debug mode?, according to the comment). And -DNDEBUG disables GOOGLE_PROTOBUF_UTF8_VALIDATION(i think?). So, we enabled this macro(-DNDEBUG) in the configuration. However, after testing, we still got the same error message. And then, we changed all the "String" type to "Bytes" typr in XXX.proto. After testing, the same error message showed.</p></li>
  <li><p>worker process 53574 exited on signal 11(core dumped),then process died. </p></li>
  <li><p>lua entry thread aborted: runtime error:/home/bilin/rtb/src/lua/shared/log.lua:34: 'short' is not callable"</p></li>
  </ol>
  
  <p>Hope somebody can help us solving those problems.
  Thank you.</p>