<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/142402>142402</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[mlir][tosa] Tosa.Resize incorrect arguments assertion crash
</td>
</tr>
<tr>
<th>Labels</th>
<td>
mlir
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
OMaghiarIMG
</td>
</tr>
</table>
<pre>
Hello,
Cross-posting from https://discourse.llvm.org/t/tosa-resize-incorrect-arguments-assertion-crash/86599
Using LLVM dec8f1314fbf77a2b557f12275b1a5e7c7a70f32
I have some examples for incorrect Tosa.Resize configurations which cause the pipeline to crash:
Border value is smaller than minimum allowed:
```
module {
func.func @main(%arg0: tensor<1x7x5x9xf32> ) -> tensor<*xf32> {
%0 = tosa.const_shape {values = dense<[1, 3, 1, 1]> : tensor<4xindex>} : () -> !tosa.shape<4>
%1 = tosa.const_shape {values = dense<[6, 1]> : tensor<2xindex>} : () -> !tosa.shape<2>
%2 = tosa.const_shape {values = dense<[-18, 0]> : tensor<2xindex>} : () -> !tosa.shape<2>
%3 = tosa.resize %arg0, %0, %1, %2 {mode = "NEAREST_NEIGHBOR"} : (tensor<1x7x5x9xf32>, !tosa.shape<4>, !tosa.shape<2>, !tosa.shape<2>) -> tensor<*xf32>
return %3 : tensor<*xf32>
}
}
```
Offset value larger than maximum allowed:
```
module {
func.func @main(%arg0: tensor<1x7x5x9xf32>) -> tensor<*xf32> {
%0 = tosa.const_shape {values = dense<[1, 3, 1, 1]> : tensor<4xindex>} : () -> !tosa.shape<4>
%1 = tosa.const_shape {values = dense<[17, 1]> : tensor<2xindex>} : () -> !tosa.shape<2>
%2 = tosa.const_shape {values = dense<0> : tensor<2xindex>} : () -> !tosa.shape<2>
%3 = tosa.resize %arg0, %0, %1, %2 {mode = "NEAREST_NEIGHBOR"} : (tensor<1x7x5x9xf32>, !tosa.shape<4>, !tosa.shape<2>, !tosa.shape<2>) -> tensor<*xf32>
return %3 : tensor<*xf32>
}
}
```
```
$ mlir-opt test.mlir --tosa-validate="level=none" --tosa-infer-shapes
<unknown>:0: error: invalid tensor dimension size
mlir-opt: /llvm-project/mlir/include/mlir/IR/StorageUniquerSupport.h:180: static ConcreteT mlir::detail::StorageUserBase<mlir::RankedTensorType, mlir::TensorType, mlir::detail::RankedTensorTypeStorage, mlir::detail::TypeUniquer, mlir::ShapedType::Trait, mlir::ValueSemantics>::get(MLIRContext *, Args &&...) [ConcreteT = mlir::RankedTensorType, BaseT = mlir::TensorType, StorageT = mlir::detail::RankedTensorTypeStorage, UniquerT = mlir::detail::TypeUniquer, Traits = <mlir::ShapedType::Trait, mlir::ValueSemantics>, Args = <llvm::ArrayRef<long> &, mlir::Type &, mlir::Attribute &>]: Assertion `succeeded( ConcreteT::verifyInvariants(getDefaultDiagnosticEmitFn(ctx), args...))' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: build/bin/mlir-opt test.mlir --tosa-validate=level=none --tosa-infer-shapes
#0 0x00005d0fa92037e8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (build/bin/mlir-opt+0x34477e8)
#1 0x00005d0fa920137e llvm::sys::RunSignalHandlers() (build/bin/mlir-opt+0x344537e)
#2 0x00005d0fa9204031 SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
#3 0x00007c46b1a42520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
#4 0x00007c46b1a969fc __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
#5 0x00007c46b1a969fc __pthread_kill_internal ./nptl/pthread_kill.c:78:10
#6 0x00007c46b1a969fc pthread_kill ./nptl/pthread_kill.c:89:10
#7 0x00007c46b1a42476 gsignal ./signal/../sysdeps/posix/raise.c:27:6
#8 0x00007c46b1a287f3 abort ./stdlib/abort.c:81:7
#9 0x00007c46b1a2871b _nl_load_domain ./intl/loadmsgcat.c:1177:9
#10 0x00007c46b1a39e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#11 0x00005d0fac7fa0f3 (build/bin/mlir-opt+0x6a3e0f3)
#12 0x00005d0fac7fa018 mlir::RankedTensorType::get(llvm::ArrayRef<long>, mlir::Type, mlir::Attribute) (build/bin/mlir-opt+0x6a3e018)
#13 0x00005d0fabe400a6 (anonymous namespace)::propagateShapesInRegion(mlir::Region&, (anonymous namespace)::TypeModificationState&) TosaInferShapes.cpp:0:0
#14 0x00005d0fabe3d7e9 (anonymous namespace)::TosaInferShapes::runOnOperation() TosaInferShapes.cpp:0:0
#15 0x00005d0fac6c79ff mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (build/bin/mlir-opt+0x690b9ff)
#16 0x00005d0fac6c82a0 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (build/bin/mlir-opt+0x690c2a0)
#17 0x00005d0fac6ce82e auto void mlir::parallelForEach<__gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_0>(mlir::MLIRContext*, __gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, __gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_0&&)::'lambda'(__gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>&&)::operator()<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&>(__gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>&&) const Pass.cpp:0:0
#18 0x00005d0fac6c9afb mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool) (build/bin/mlir-opt+0x690dafb)
#19 0x00005d0fac6c7b58 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (build/bin/mlir-opt+0x690bb58)
#20 0x00005d0fac6c82a0 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (build/bin/mlir-opt+0x690c2a0)
#21 0x00005d0fac6caa59 mlir::PassManager::run(mlir::Operation*) (build/bin/mlir-opt+0x690ea59)
#22 0x00005d0fac6c2f9b performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#23 0x00005d0fac6c2c00 llvm::LogicalResult llvm::function_ref<llvm::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>::callback_fn<mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&)::$_0>(long, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) MlirOptMain.cpp:0:0
#24 0x00005d0fac7785a5 mlir::splitAndProcessBuffer(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<llvm::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>, llvm::raw_ostream&, llvm::StringRef, llvm::StringRef) (build/bin/mlir-opt+0x69bc5a5)
#25 0x00005d0fac6bbe65 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (build/bin/mlir-opt+0x68ffe65)
#26 0x00005d0fac6bc118 mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) (build/bin/mlir-opt+0x6900118)
#27 0x00005d0fac6bc332 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (build/bin/mlir-opt+0x6900332)
#28 0x00005d0fa9151c67 main (build/bin/mlir-opt+0x3395c67)
#29 0x00007c46b1a29d90 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
#30 0x00007c46b1a29e40 call_init ./csu/../csu/libc-start.c:128:20
#31 0x00007c46b1a29e40 __libc_start_main ./csu/../csu/libc-start.c:379:5
#32 0x00005d0fa91517a5 _start (build/bin/mlir-opt+0x33957a5)
Aborted (core dumped)
```
I believe these should return proper error messages.
Noticed that on [compiler explorer the border examples passes](https://godbolt.org/z/8b9x1hjKn) but infers the shape as 1x**-5**x4x9.
Thank you
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzsWltv47by_zTMC2FDoqzbQx6Ui0-D_6ZZJDl9NShqJLOhSP1JKuv00x-QUmzZuW_TLVpssbUdajjzmxnORSSpMbyRAMcoPkHx2RHt7Vrp46tL2qw51ReX_zkqVfVw_AsIoRA5RUGBguJUK2NmnTKWywbXWrV4bW1nUFQgskRkWXHDVK8NzIW4b-dKN4gsrftfGTrTYPgfMOOSKa2B2RnVTd-CtGZGjQFtuZIzpqlZI7LMkjjPUVD81zhZX778dokrYFkdRuGiLus0paSM47QOCUnjMqQxpCylaVBHZAB7gdf0HrBRLWDY0LYTYHCtNN7Kx7fK0Pm1R4WZkjVvek0dCoO_rTlbY0Z7A9iuAXe8A8ElYKvwADFyQk6UrkDjeyp6wNxg01IhQGO7phK3XPK2bzEVQn2DapiBkmD8FxStqnoBGKUnKChw3Us2dx8YLYKWcolIhkhMdROgqMAWpFEaRafhJt3Em3zjNI3OMSI5nrkfWwJEiu3DgTXGGJE4wCg6w84Vc6aksSuzph1gR-QVMP55BdKA4xKfhIic4sh9hMNHfOaZTtEsNlxWsEHROUrP_CMPe8SESOjleUmO2g9uEYUfRZS8iIN8CIczzg4G-SiMWZg5IMHnAJkYJNohGaIFP64AcupdOH6H4zdxGFtVgZ-HCPn1vLg-v7ld_Xp-8Z9fTq6uESETGC-soYHZU089N_4S_TD-2lIclNRgey0fdS2eI_WUKD1z0TJ8TmLmqq4N2DHiBNXNNtro5iPR9p3h9o-Ltj8RbGH6idGGvzfcgk8N9Z8BtiXdRhg-CJS932SBW8H1THUWWzB27v7Cs5mv6PdU8IpaQNEZIkTAPQgUnUklARHySMRlDXrm1TCOY3TayzupvkmnUFT4aAOtHcYCc-l5jqhxxVuQhiuJna9cEI9YBnsvXZsx67T6HZhrM9xTRJZcMtFXsBu4uEZkeWOVpg38V_L_70Hf9F2ntJ27Qh5mHoSx1HKGT5VkGizcesVdHomKCizlYvj9yMeAPqF-ie7orqm8g-rWg7996MA5cvf0pfEp90MOo7SXJziiUad9ohtn8cpLGwg15Xaf5DcXbjfQUmk5M4M_UFQ0YBHJLr9cXJ8qaWFjMSKFm1noxmBEEkSS-XzuViOKT3b2ciHyui2cwQ7p9ilGfQ-J3mmi0RCvzT6wl7fKkHH2PPld1tuaaODmVudAWmhNH66hdoNKNkOeSg5Wx0MHT0cLazUvezs8is59Ni5w8dgwY5QEpmcMoIIKkWy3fIf596B5_XAh76nmVFqDSNaAPYOa9sKecdpI186z85bbpSuBzG4QyR0GqhszeNn_S3FNuYBqjoLi65fz4uYcm75sucUUl32DNbh4cv3x_jtBw-26L-dMtWO8Pg1bbkwPBpElprLCY_T6ttu32rik7M5qysDJvrGU3eGqb7uhxAdz7P_7qlWjaYu3LxXOTGXPRYXIsnTlffmuRDbNYi-kMIxIFOBgEwRBEFdBTXMSRClkeOdw82CGH181l9ZjvnUaIJLtiDT9tlLGaqDt6HcurY8qkj2PHJGTYBMtFmkKruKNWMIDLGGUwnNYrnt5wxtJxS9UVgK0Gevmm-LiKIWdOHIgbhFEId5jjEjmNTnFhjdc1mplxwxyr3jlf-bjDDNnXTeWgWAUEI0CUrZIypAuSEyCocYvBS8RWW6yZJUsZoLLfjNrZD88YHOj5onH7KfsEC_2GeZJXjO8WnV2rYFWqzsuxIq7N0S3cPwbIJ4jspSdFYgsp2RzhqJisUBRkSYj8_g9zKUFLal4lW2auVr0aITkObbTOa_yyvIpr_TQoIs0wY3xDvBshp-ILOf-rwdTQecCslOGbxBZasoNeMYkRVHxqHq2z5dkaR1hWro84PnYavCXHxpwhU7RcXr-ZHpY4pUUK6FotaqU68o9Iy69lm64NQ2jA68wTB2Y3LcpURjsc4tyyJOPrRo_ZVg1juFeWLG0pkEdvRErCY0gqKMdD_KER5i9ViMn9fe16vG0crxQNd4Obw85zHaQoynkEhZBQL0dqVTyoVW9wZK2YDqfzfJBXqdVRxtqwZdNcyGvoeHK1ZOJruNQMnS3r_JzGl2qitec-XC8sS45u6m537W5cAl5kHWQP5wGi30NoiqF_E2J-1zHBN3LK3nVwbArNGbLt-XHe05PWJrX9QvdyFV3q666r9SYoqKdVXoreM92jmDMoLvBCbCDJ4Wk4sFwc0klbYY-p1RKuO9e-p2_6n2lJsmDMq_r3eJIDlTLCA0-rNrXcTNtT8WBdIs4-XRdp5OcqAtprPatgtJPuO4TDJKHByP2r1SDtBeyVti_xI5F7U1zMkKDnTnTA3NCRgDT3ipfKCd4OqqpECCWSp9TtkbR6WrVyH7FNpuBYLWSSrdUrLh1lvJvfB_1y2StF-ZBsou2E04hb85866ZLp_VoMWOrxz6T_QihE4lUCMV-hKbutej8SdL9PEGILFaB5z8Jh8nb12jqnw7_Oxz-0-r_rjDzmxeTsVTQtqwoIiki2U9n_3hn7_lDdaOhfav1l2ueDFn3p9v_NrcPzRN2jJ9ppLOD9iindfnJueHtjq2idbnr2PLD3r6Ms39ub1_Guxc_Evzs7T-xtyfhgTkpjfMDFI96Pbsu9s3yDvFA43wnnhyIJ3Ve4g50rXRbMH_L4Y3NyG16MGuqoVp1Vu9tat-oXjO4bDSKzh8NdeDap13s5Jng-qqzl5TLU3_5YsIjx5OnTxMDiQ6VY0Ew2fH8ohrOqLgG0ws7Ga976TVf6WEz5YUJiGRb3Xt_VPBE90tolX446et6WJZb-mrYWV9VIMDCy3O2rc7LHsi3BzKMClFSdreq5V6Gnhjpvb78y_XZoTvjVACz19BwY_XD08Xx2gJ48mrkd75-qCaveOaN5bnY3_VLs5jGE8VNJ7gtZPVVKwbGPGL9WxbdPzAkXqWYPruxmsvmGuoXh9_OqiWLabzLqgdbe2UJSfz8kv63BeRblsrqGpKJpQ52CksW7u1871tqLOJsTYdyXXzUkW-p-Y7yGYSTXXCSHsKPIvIp8P88zigiO5x7LXIexiFLUuwPTt441YvymCXpjtHhYUxe5QFerQQv2cpYqu3KVaHV9kyGmf7pedF4HPXcJH_TIvZHXMkgMgoORcIiwH4Cl9weShl-OtYzz3o4AyKOIxkT7_YkdI_jnhLP4X-Wc5S6GhSPjMmhmVMa44HlOwydPqaQolTaQuWmMKXBH2NDNTphcu3mApcgONz7U3AD2KxVL6rHuz2ddu_Jw6UZ3IIxtAEzH669_qosZ1Bhu6YWK4lRfMJU23HhJmw6obS_MAe4HK6ubq_GdtQYMCg-QyQ7OMFXVamEHa_z_oHIMivzTbj-_f-kW7Blb7E_IDee73CZixocboZYmMXD92axyUeQt2sq7_CD6o-q46jKo5wewXGYLrIsXQQkPVofk6osaZxQmtckqdMyXMRJzhYsLfM4rnNyxI9JQOIgCUi4IAFJ51UWJWEEQUJIBmVYokUALeViexX5yF8zOA4XZBGQI0FLEMbffyZkuCZEUHx2pI_95YSybwxaBIIba3YcLLfC35n2E-IzFJ9YZSiKz_buEu9uGG8vI-DtDefhTsNRr8Xx91-UGJW4Pyb_CwAA___iFxCu">