diff --git a/components-rs/crashtracker.h b/components-rs/crashtracker.h index f2682769b6..c5e4464c13 100644 --- a/components-rs/crashtracker.h +++ b/components-rs/crashtracker.h @@ -675,7 +675,16 @@ void ddog_crasht_StackTrace_drop(struct ddog_crasht_Handle_StackTrace *trace); */ DDOG_CHECK_RETURN struct ddog_VoidResult ddog_crasht_StackTrace_push_frame(struct ddog_crasht_Handle_StackTrace *trace, - struct ddog_crasht_Handle_StackFrame *frame); + struct ddog_crasht_Handle_StackFrame *frame, + bool incomplete); + +/** + * # Safety + * The `stacktrace` can be null, but if non-null it must point to a StackTrace made by this module, + * which has not previously been dropped. + */ +DDOG_CHECK_RETURN +struct ddog_VoidResult ddog_crasht_StackTrace_set_complete(struct ddog_crasht_Handle_StackTrace *trace); /** * Demangles the string "name". diff --git a/components-rs/sidecar.rs b/components-rs/sidecar.rs index 3b0d0b4409..76110f40b5 100644 --- a/components-rs/sidecar.rs +++ b/components-rs/sidecar.rs @@ -120,7 +120,16 @@ pub extern "C" fn ddog_sidecar_connect_php( cfg.log_method = LogMethod::File(str.into()); } #[cfg(not(windows))] - { cfg.log_method = LogMethod::File(OsStr::from_bytes(error_path).into()); } + { + // Paths containing a colon generally are some magic - just log to stderr directly + // E.g. "/var/www/html/host:[3]" on a serverless platform + // In general, stdio is the only way for having magic paths here. + if error_path.contains(&b':') { + cfg.log_method = LogMethod::Stderr; + } else { + cfg.log_method = LogMethod::File(OsStr::from_bytes(error_path).into()); + } + } } #[cfg(windows)] let log_level = log_level.to_utf8_lossy().as_ref().into(); diff --git a/libdatadog b/libdatadog index 8331f61e25..82cb3464c6 160000 --- a/libdatadog +++ b/libdatadog @@ -1 +1 @@ -Subproject commit 8331f61e250144cf8297e75bd9a45b4cb463286c +Subproject commit 82cb3464c68387eb47a57ec9b19ea80f7732d366