Skip to content

Commit 9dc75df

Browse files
committed
Add bug list entry
1 parent 659fcdb commit 9dc75df

2 files changed

Lines changed: 34 additions & 1 deletion

File tree

docs/bugs.json

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,14 @@
11
[
2+
{
3+
"uid": "SOL-2026-2",
4+
"name": "UnusedStoreEliminatorWithoutSSATransformation",
5+
"summary": "When the UnusedStoreEliminators optimizer step is run on non-SSA AST form, it may result in incorrect removal of storage or memory writes.",
6+
"description": "Solidity allows defining custom user-defined optimizer sequences. In version 0.8.12, the unused store eliminator was introduced to remove redundant writes to storage or memory. The bug was in this optimizer step's implementation. It used SSAValueTracker to identify variables that are never assigned. Based on this set of unassigned variables, a knowledge base is created to track current variable values. This knowledge is necessary for deciding whether memory or storage writes can be safely removed. Unfortunately, SSAValueTracker correctly removed assigned variables from the SSA variable set, but failed to remove variables that depend on those assigned variables. This oversight made it possible to construct inline assembly code that was incorrectly optimized by removing necessary writes. As a result, contracts compiled with different optimization sequences could exhibit different runtime behavior. The bug was introduced in version 0.8.12 alongside the unused store eliminator implementation. It was fixed in version 0.8.35 by implementing additional filtering of the variable set returned by SSAValueTracker and extending this set by functions parameters values.",
7+
"link": "https://blog.soliditylang.org/2026/X/Y/Z/",
8+
"introduced": "0.8.13",
9+
"fixed": "0.8.35",
10+
"severity": "very low"
11+
},
212
{
313
"uid": "SOL-2026-1",
414
"name": "TransientStorageClearingHelperCollision",

docs/bugs_by_version.json

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1869,6 +1869,7 @@
18691869
},
18701870
"0.8.13": {
18711871
"bugs": [
1872+
"UnusedStoreEliminatorWithoutSSATransformation",
18721873
"LostStorageArrayWriteOnSlotOverflow",
18731874
"VerbatimInvalidDeduplication",
18741875
"FullInlinerNonExpressionSplitArgumentEvaluationOrder",
@@ -1884,6 +1885,7 @@
18841885
},
18851886
"0.8.14": {
18861887
"bugs": [
1888+
"UnusedStoreEliminatorWithoutSSATransformation",
18871889
"LostStorageArrayWriteOnSlotOverflow",
18881890
"VerbatimInvalidDeduplication",
18891891
"FullInlinerNonExpressionSplitArgumentEvaluationOrder",
@@ -1897,6 +1899,7 @@
18971899
},
18981900
"0.8.15": {
18991901
"bugs": [
1902+
"UnusedStoreEliminatorWithoutSSATransformation",
19001903
"LostStorageArrayWriteOnSlotOverflow",
19011904
"VerbatimInvalidDeduplication",
19021905
"FullInlinerNonExpressionSplitArgumentEvaluationOrder",
@@ -1908,6 +1911,7 @@
19081911
},
19091912
"0.8.16": {
19101913
"bugs": [
1914+
"UnusedStoreEliminatorWithoutSSATransformation",
19111915
"LostStorageArrayWriteOnSlotOverflow",
19121916
"VerbatimInvalidDeduplication",
19131917
"FullInlinerNonExpressionSplitArgumentEvaluationOrder",
@@ -1918,6 +1922,7 @@
19181922
},
19191923
"0.8.17": {
19201924
"bugs": [
1925+
"UnusedStoreEliminatorWithoutSSATransformation",
19211926
"LostStorageArrayWriteOnSlotOverflow",
19221927
"VerbatimInvalidDeduplication",
19231928
"FullInlinerNonExpressionSplitArgumentEvaluationOrder",
@@ -1927,6 +1932,7 @@
19271932
},
19281933
"0.8.18": {
19291934
"bugs": [
1935+
"UnusedStoreEliminatorWithoutSSATransformation",
19301936
"LostStorageArrayWriteOnSlotOverflow",
19311937
"VerbatimInvalidDeduplication",
19321938
"FullInlinerNonExpressionSplitArgumentEvaluationOrder",
@@ -1936,6 +1942,7 @@
19361942
},
19371943
"0.8.19": {
19381944
"bugs": [
1945+
"UnusedStoreEliminatorWithoutSSATransformation",
19391946
"LostStorageArrayWriteOnSlotOverflow",
19401947
"VerbatimInvalidDeduplication",
19411948
"FullInlinerNonExpressionSplitArgumentEvaluationOrder",
@@ -1960,6 +1967,7 @@
19601967
},
19611968
"0.8.20": {
19621969
"bugs": [
1970+
"UnusedStoreEliminatorWithoutSSATransformation",
19631971
"LostStorageArrayWriteOnSlotOverflow",
19641972
"VerbatimInvalidDeduplication",
19651973
"FullInlinerNonExpressionSplitArgumentEvaluationOrder",
@@ -1969,57 +1977,66 @@
19691977
},
19701978
"0.8.21": {
19711979
"bugs": [
1980+
"UnusedStoreEliminatorWithoutSSATransformation",
19721981
"LostStorageArrayWriteOnSlotOverflow",
19731982
"VerbatimInvalidDeduplication"
19741983
],
19751984
"released": "2023-07-19"
19761985
},
19771986
"0.8.22": {
19781987
"bugs": [
1988+
"UnusedStoreEliminatorWithoutSSATransformation",
19791989
"LostStorageArrayWriteOnSlotOverflow",
19801990
"VerbatimInvalidDeduplication"
19811991
],
19821992
"released": "2023-10-25"
19831993
},
19841994
"0.8.23": {
19851995
"bugs": [
1996+
"UnusedStoreEliminatorWithoutSSATransformation",
19861997
"LostStorageArrayWriteOnSlotOverflow"
19871998
],
19881999
"released": "2023-11-08"
19892000
},
19902001
"0.8.24": {
19912002
"bugs": [
2003+
"UnusedStoreEliminatorWithoutSSATransformation",
19922004
"LostStorageArrayWriteOnSlotOverflow"
19932005
],
19942006
"released": "2024-01-25"
19952007
},
19962008
"0.8.25": {
19972009
"bugs": [
2010+
"UnusedStoreEliminatorWithoutSSATransformation",
19982011
"LostStorageArrayWriteOnSlotOverflow"
19992012
],
20002013
"released": "2024-03-14"
20012014
},
20022015
"0.8.26": {
20032016
"bugs": [
2017+
"UnusedStoreEliminatorWithoutSSATransformation",
20042018
"LostStorageArrayWriteOnSlotOverflow"
20052019
],
20062020
"released": "2024-05-21"
20072021
},
20082022
"0.8.27": {
20092023
"bugs": [
2024+
"UnusedStoreEliminatorWithoutSSATransformation",
20102025
"LostStorageArrayWriteOnSlotOverflow"
20112026
],
20122027
"released": "2024-09-04"
20132028
},
20142029
"0.8.28": {
20152030
"bugs": [
2031+
"UnusedStoreEliminatorWithoutSSATransformation",
20162032
"TransientStorageClearingHelperCollision",
20172033
"LostStorageArrayWriteOnSlotOverflow"
20182034
],
20192035
"released": "2024-10-09"
20202036
},
20212037
"0.8.29": {
20222038
"bugs": [
2039+
"UnusedStoreEliminatorWithoutSSATransformation",
20232040
"TransientStorageClearingHelperCollision",
20242041
"LostStorageArrayWriteOnSlotOverflow"
20252042
],
@@ -2041,32 +2058,38 @@
20412058
},
20422059
"0.8.30": {
20432060
"bugs": [
2061+
"UnusedStoreEliminatorWithoutSSATransformation",
20442062
"TransientStorageClearingHelperCollision",
20452063
"LostStorageArrayWriteOnSlotOverflow"
20462064
],
20472065
"released": "2025-05-07"
20482066
},
20492067
"0.8.31": {
20502068
"bugs": [
2069+
"UnusedStoreEliminatorWithoutSSATransformation",
20512070
"TransientStorageClearingHelperCollision",
20522071
"LostStorageArrayWriteOnSlotOverflow"
20532072
],
20542073
"released": "2025-12-03"
20552074
},
20562075
"0.8.32": {
20572076
"bugs": [
2077+
"UnusedStoreEliminatorWithoutSSATransformation",
20582078
"TransientStorageClearingHelperCollision"
20592079
],
20602080
"released": "2025-12-18"
20612081
},
20622082
"0.8.33": {
20632083
"bugs": [
2084+
"UnusedStoreEliminatorWithoutSSATransformation",
20642085
"TransientStorageClearingHelperCollision"
20652086
],
20662087
"released": "2025-12-18"
20672088
},
20682089
"0.8.34": {
2069-
"bugs": [],
2090+
"bugs": [
2091+
"UnusedStoreEliminatorWithoutSSATransformation"
2092+
],
20702093
"released": "2026-02-18"
20712094
},
20722095
"0.8.35": {

0 commit comments

Comments
 (0)