[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] tools/oxenstored: Render backtraces more nicely in Syslog


  • To: Christian Lindig <christian.lindig@xxxxxxxxxx>
  • From: Andrew Cooper <Andrew.Cooper3@xxxxxxxxxx>
  • Date: Fri, 2 Dec 2022 09:49:12 +0000
  • Accept-language: en-GB, en-US
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=cGyQ/0foqTCQoixkdiWHAFmnQvg8QPJxUvQtU0Av6oU=; b=DpUJ7xrGGz1YXl27clezO45KNzcGVKvM1B7ui5iPifVZk0BPIvUwtPfxOTusQ6+UKq23vUvgXHE8bKF752wrGzeF7L2bBF/mor5IPHlGVt1f9E3rsdS5ybP9yLUCCWB+xazFU84kYiCwlrsMfZLtY3r0oh04M7DG3ln2hlN7iUQz/PzouG4s+M63Nfkaa5d1E+h8iLVXViyMa41A07U1hJLfvUpNRQRsCXlWAg0HNQRgWsU1ZNm7jl5nzpWo1p2VE39kcgRwP5MeJHIQ6uboTtTC/AI6aqBSq8VvuouGWKd5SEAlvMXDak7NzEUdnsjPY/T2moELhMS2YNZfDc1b4Q==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=IHKZEy7HWpkXYvlw7tbriD0YNaSdJN0V+4D2vrce/244un6T4Zp+FvMXaA1ntzT6VdQzMvkr0OiaqZsszS4ci5fa9GHIaRUhONFIfjz6N2OK6lo/KsKUIuQcpR/Wi30jsmYDQ7VdO3EnQKpOHyiVS1vKqBzpohlsmW9vYYJjAPZqf0ggRx2WfFYSDGiNdp1DA3sBfzTWn5KXMOOvp3HB4P2CtyEkh8iPXXJZEK8eDlN+SxJh3JRyZszFHOq+z/0oulY5u4KfxE3SnU64+DgmR1nO7/dWEeFXaJjMHT85nfUa350OiFYrN6vZ3pZzWb9Gze5OHF2no1NC6fRaG1Rx/w==
  • Authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=citrix.com;
  • Cc: Xen-devel <xen-devel@xxxxxxxxxxxxxxxxxxxx>, David Scott <dave@xxxxxxxxxx>, Edwin Torok <edvin.torok@xxxxxxxxxx>, Rob Hoes <Rob.Hoes@xxxxxxxxxx>
  • Delivery-date: Fri, 02 Dec 2022 09:49:21 +0000
  • Ironport-data: A9a23:wXOZlahPiv8j094nRnMwPoL8X161fBEKZh0ujC45NGQN5FlHY01je htvUDqGafreYWT2Kd5wbI2z9RtUvZfVx4JrTQVk/CA0EHwb9cadCdqndUqhZCn6wu8v7q5Ex 55HNoSfdpBcolv0/ErF3m3J9CEkvU2wbuOgTrWCYmUpH1QMpB4J0XpLg/Q+jpNjne+3CgaMv cKai8DEMRqu1iUc3lg8sspvkzsy+qWs0N8klgZmP6oS5geEzyB94K83fsldEVOpGuG4IcbiL wrz5OnR1n/U+R4rFuSknt7TGqHdauePVeQmoiM+t5mK2nCulARrukoIHKN0hXNsoyeIh7hMJ OBl7vRcf+uL0prkw4zxWzEAe8130DYvFLXveRBTuuTLp6HKnueFL1yDwyjaMKVBktubD12i+ tQEKi8CUhHcid7nxZ+cGudzxeMfcPXCadZ3VnFIlVk1DN4AaLWaGuDhwoYd2z09wMdTAfzZe swVLyJ1awjNaAFOPVFRD48imOCvhT/0dDgwRFC9/PJrpTSMilEvluGya7I5efTTLSlRtm+eq njL4CLSBRYCOcbE4TGE7mitlqnEmiaTtIc6ROPiraY30QH7Kmo7FzgnZX6w8KOAoU+UYuh+G 3JJpio1lP1nnKCsZpynN/Gim1aUsxhZV9dOHukS7ACW1rGS8wufHnIDTDNKdJohrsBebTAjy FKhhd7iAj1r9rqPRhqgGqy8qDqzPW0eKjYEbCpdFA8duYC8+8c0kw7FSctlHOitlNrpFDrsw jeM6i8jm7EUis1N3KK+lbzavw+RSlHyZlZdzm3qsqiNt2uVuKbNi1SU1GXm
  • Ironport-hdrordr: A9a23:Gn41ZqApSSeKDz/lHema55DYdb4zR+YMi2TDtnoBLyC9F/byqy nAppomPHPP5Qr5O0tQ/uxoWpPgfZq0z/cci7X5Vo3MYOCJggeVBbAn14fkzj3mFWnM8OlQvJ 0QEZSWo+eRMbE/t7ef3OGjeOxQo+Wv4eS2lI7lvhJQcT0=
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
  • Thread-index: AQHZBcqVkKRzz2J21UqyxRAvPfqWaK5aUVgAgAAJugA=
  • Thread-topic: [PATCH] tools/oxenstored: Render backtraces more nicely in Syslog

On 02/12/2022 09:14, Christian Lindig wrote:
>> On 1 Dec 2022, at 21:19, Andrew Cooper <andrew.cooper3@xxxxxxxxxx> wrote:
>>
>> fallback_exception_handler feeds a string with embedded newlines directly 
>> into
>> syslog().  While this is an improvement on getting nothing, syslogd escapes
>> all control characters it gets, and emits one (long) line into the log.
>>
>> Fix the problem generally in the syslog stub.  As we already have a local 
>> copy
>> of the string, split it in place and emit one syslog() call per line.
>>
>> Also tweak Logging.msg_of to avoid putting an extra newline on a string which
>> already ends with one.
>>
>> Fixes: ee7815f49faf ("tools/oxenstored: Set uncaught exception handler")
>> Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
>> ---
>> CC: Christian Lindig <christian.lindig@xxxxxxxxxx>
>> CC: David Scott <dave@xxxxxxxxxx>
>> CC: Edwin Torok <edvin.torok@xxxxxxxxxx>
>> CC: Rob Hoes <Rob.Hoes@xxxxxxxxxx>
> Acked-by: Christian Lindig <christian.lindig@xxxxxxxxxx>

Thanks.

>
>> ---
>> tools/ocaml/xenstored/logging.ml     |  2 +-
>> tools/ocaml/xenstored/syslog_stubs.c | 26 +++++++++++++++++++++++---
>> 2 files changed, 24 insertions(+), 4 deletions(-)
>>
>> diff --git a/tools/ocaml/xenstored/logging.ml 
>> b/tools/ocaml/xenstored/logging.ml
>> index 255051437d60..f233bc9a3956 100644
>> --- a/tools/ocaml/xenstored/logging.ml
>> +++ b/tools/ocaml/xenstored/logging.ml
>> @@ -344,7 +344,7 @@ let watch_not_fired ~con perms path =
>>      access_logging ~tid:0 ~con ~data Watch_not_fired ~level:Info
>>
>> let msg_of exn bt =
>> -    Printf.sprintf "Fatal exception: %s\n%s\n" (Printexc.to_string exn)
>> +    Printf.sprintf "Fatal exception: %s\n%s" (Printexc.to_string exn)
>>              (Printexc.raw_backtrace_to_string bt)
>>
>> let fallback_exception_handler exn bt =
>> diff --git a/tools/ocaml/xenstored/syslog_stubs.c 
>> b/tools/ocaml/xenstored/syslog_stubs.c
>> index e16c3a9491d0..760e78ff73dc 100644
>> --- a/tools/ocaml/xenstored/syslog_stubs.c
>> +++ b/tools/ocaml/xenstored/syslog_stubs.c
>> @@ -37,14 +37,34 @@ value stub_syslog(value facility, value level, value msg)
>> {
>>      CAMLparam3(facility, level, msg);
>>      char *c_msg = strdup(String_val(msg));
> Is this working as expected? An OCaml string may contain embedded null bytes.

I wondered the same, but there's really nothing sane to be done.

This is for handling human readable strings, and attempting to force
NULs out via syslog() can't be done (because of syslog()'s API).

~Andrew

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.