@@ -394,9 +394,12 @@ Result<bool> ETDumpGen::log_intermediate_output_delegate_helper(
394
394
395
395
// Check the type of `output` then call the corresponding logging functions
396
396
if constexpr (std::is_same<T, Tensor>::value) {
397
- long offset = write_tensor_or_raise_error (output);
397
+ Result<long > offset = write_tensor_or_return_error (output);
398
+ ET_CHECK_MSG (
399
+ offset.ok (),
400
+ " write_tensor_or_return_error() failed to write tensor to debug buffer" );
398
401
Result<etdump_Tensor_ref_t> tensor_ref =
399
- add_tensor_entry (builder_, output, offset);
402
+ add_tensor_entry (builder_, output, offset. get () );
400
403
if (!tensor_ref.ok ()) {
401
404
return tensor_ref.error ();
402
405
}
@@ -408,9 +411,12 @@ Result<bool> ETDumpGen::log_intermediate_output_delegate_helper(
408
411
} else if constexpr (std::is_same<T, ArrayRef<Tensor>>::value) {
409
412
etdump_Tensor_vec_start (builder_);
410
413
for (size_t i = 0 ; i < output.size (); ++i) {
411
- long offset = write_tensor_or_raise_error (output[i]);
414
+ Result<long > offset = write_tensor_or_return_error (output[i]);
415
+ ET_CHECK_MSG (
416
+ offset.ok (),
417
+ " write_tensor_or_return_error() failed to write tensor to debug buffer" );
412
418
Result<etdump_Tensor_ref_t> tensor_ref =
413
- add_tensor_entry (builder_, output[i], offset);
419
+ add_tensor_entry (builder_, output[i], offset. get () );
414
420
if (!tensor_ref.ok ()) {
415
421
return tensor_ref.error ();
416
422
}
@@ -566,9 +572,12 @@ Result<bool> ETDumpGen::log_evalue(
566
572
switch (evalue.tag ) {
567
573
case Tag::Tensor: {
568
574
executorch::aten::Tensor tensor = evalue.toTensor ();
569
- long offset = write_tensor_or_raise_error (tensor);
575
+ Result<long > offset = write_tensor_or_return_error (tensor);
576
+ ET_CHECK_MSG (
577
+ offset.ok (),
578
+ " write_tensor_or_return_error() failed to write tensor to debug buffer" );
570
579
Result<etdump_Tensor_ref_t> tensor_ref =
571
- add_tensor_entry (builder_, tensor, offset);
580
+ add_tensor_entry (builder_, tensor, offset. get () );
572
581
if (!tensor_ref.ok ()) {
573
582
return tensor_ref.error ();
574
583
}
@@ -591,9 +600,12 @@ Result<bool> ETDumpGen::log_evalue(
591
600
evalue.toTensorList ();
592
601
etdump_Tensor_vec_start (builder_);
593
602
for (size_t i = 0 ; i < tensors.size (); ++i) {
594
- long offset = write_tensor_or_raise_error (tensors[i]);
603
+ Result<long > offset = write_tensor_or_return_error (tensors[i]);
604
+ ET_CHECK_MSG (
605
+ offset.ok (),
606
+ " write_tensor_or_return_error() failed to write tensor to debug buffer" );
595
607
Result<etdump_Tensor_ref_t> tensor_ref =
596
- add_tensor_entry (builder_, tensors[i], offset);
608
+ add_tensor_entry (builder_, tensors[i], offset. get () );
597
609
if (!tensor_ref.ok ()) {
598
610
return tensor_ref.error ();
599
611
}
@@ -689,7 +701,7 @@ void ETDumpGen::set_delegation_intermediate_output_filter(
689
701
filter_ = filter;
690
702
}
691
703
692
- long ETDumpGen::write_tensor_or_raise_error (Tensor tensor) {
704
+ Result< long > ETDumpGen::write_tensor_or_return_error (Tensor tensor) {
693
705
// Previously, the function copy_tensor_to_debug_buffer returned 0xFF..F when
694
706
// given an empty tensor, which is an invalid offset for most buffers. In our
695
707
// data sink, we will return the current debug_buffer_offset for better
@@ -702,14 +714,14 @@ long ETDumpGen::write_tensor_or_raise_error(Tensor tensor) {
702
714
return static_cast <size_t >(-1 );
703
715
}
704
716
705
- ET_CHECK_MSG (
706
- data_sink_, " Must set data sink before writing tensor-like data" );
717
+ if (!data_sink_) {
718
+ return Error::InvalidArgument;
719
+ }
707
720
Result<size_t > ret =
708
721
data_sink_->write (tensor.const_data_ptr (), tensor.nbytes ());
709
- ET_CHECK_MSG (
710
- ret.ok (),
711
- " Failed to write tensor with error 0x%" PRIx32,
712
- static_cast <uint32_t >(ret.error ()));
722
+ if (!ret.ok ()) {
723
+ return ret.error ();
724
+ }
713
725
return static_cast <long >(ret.get ());
714
726
}
715
727
0 commit comments