SOLIDITY COMPILER · LIST OF KNOWN BUGS

Solidity compiler bugs by version

By Mike, independent smart contract security researcher. Data fetched 2026-10-11.

The Solidity documentation publishes a list of known compiler bugs in two JSON files. This page shows data from both files as they were on 2026-10-11. Enter a compiler version to see the bugs that the list names for it. Below the lookup you find a table of all released versions in the file and a table of all bug entries.

On this page Version lookup Docs quotes All versions All bugs Limits

66
bug entries
121
released versions
0.1.0 to 0.8.37
oldest and newest version
2026-10-11
date of the fetch
Source files of this page, fetched 2026-10-11
File Last commit Commit date Records
bugs.json9833e8bd2026-09-2366 bug entries
bugs_by_version.jsond92b6b1f2026-09-09121 versions

Source: bugs.json and bugs_by_version.json at the named commits, fetched 2026-10-11.

Look up a compiler version

Enter a released version as three numbers, for example 0.8.19. The bug names for a version come from bugs_by_version.json. The details of each bug come from bugs.json. For each listed bug the result shows the name, the severity, the official summary, the introduced and fixed versions, the conditions and the official link.

The lookup needs JavaScript. Without it, use the two tables below.

Source: bugs_by_version.json and bugs.json, fetched 2026-10-11.

A listed bug applies only under its conditions. The list is about the compiler version. It does not say that a contract compiled with that version has the bug.

What the official docs say about the list

The quotes in this table are copied from the docs page "List of Known Bugs" as it was on 2026-10-11. On that date the title of the docs page named the build "Solidity 0.8.38-develop". This name is the label of the docs build. The newest version in bugs_by_version.json is 0.8.37.

Words of the official docs page, fetched 2026-10-11
Topic or field Quote
Content of the list"Below, you can find a JSON-formatted list of some of the known security-relevant bugs in the Solidity compiler."
Start of the list"The list stretches back as far as version 0.3.0, bugs known to be present only in versions preceding that are not listed."
Lookup by version"There is another file called bugs_by_version.json, which can be used to check which bugs affect a specific version of the compiler."
Nightly versions"It is mildly suspicious if a contract was compiled with a nightly compiler version instead of a released version. This list does not keep track of unreleased or nightly versions."
severity"Severity of the bug: very low, low, medium, high. Takes into account discoverability in contract tests, likelihood of occurrence and potential damage by exploits."
conditions"Conditions that have to be met to trigger the bug. The following keys can be used: optimizer, Boolean value which means that the optimizer has to be switched on to enable the bug. evmVersion, a string that indicates which EVM version compiler settings trigger the bug. The string can contain comparison operators. For example, ">=constantinople" means that the bug is present when the EVM version is set to constantinople or later. If no conditions are given, assume that the bug is present."
introduced"The first published compiler version that contained the bug, optional"
fixed"The first published compiler version that did not contain the bug anymore"
check"This field contains different checks that report whether the smart contract contains the bug or not."

Source: Solidity docs, List of Known Bugs, fetched 2026-10-11.

The two files show four more facts on 2026-10-11.

The docs sentence gives 0.3.0 as the start of the list. The file bugs_by_version.json also holds 11 versions below 0.3.0, from 0.1.0 to 0.2.2. For each of them it lists the entry AncientCompiler. The summary of that entry in bugs.json is "This compiler version is ancient and might contain several undocumented or undiscovered bugs."

The docs page names four severity values. The file bugs.json uses six values. They are high (3 entries), medium/high (4), medium (12), low/medium (3), low (23) and very low (21).

The docs page explains the condition keys optimizer and evmVersion. The file bugs.json also uses the keys ABIEncoderV2, yulOptimizer and viaIR. The docs page does not explain these three keys. This page shows each key and its value as the file has them.

17 of the 66 entries have no introduced value. The file bugs_by_version.json lists each of these 17 entries for 0.1.0, the oldest version in the file. The fixed version is the first version without the bug, so a bug is not listed for its fixed version.

All released versions with release date and bug count

This table has all 121 versions of bugs_by_version.json, ordered by version number with the highest number first. The release date is the released value of the file. The count is the number of bug names that the file lists for the version. Version 0.3.0 has the highest count, 25. Version 0.8.37 is the newest version in the file and has a count of 0.

A count of 0 means that the list named no bug for that version on 2026-10-11. It does not mean that the version has no bugs. The docs page says that the list holds "some of the known security-relevant bugs".

Released Solidity compiler versions and listed bugs, as of 2026-10-11
Version Released Listed bugs
0.8.372026-09-100
0.8.362026-07-093
0.8.352026-04-295
0.8.342026-02-185
0.8.332025-12-186
0.8.322025-12-186
0.8.312025-12-037
0.8.302025-05-077
0.8.292025-03-127
0.8.282024-10-096
0.8.272024-09-045
0.8.262024-05-215
0.8.252024-03-144
0.8.242024-01-254
0.8.232023-11-084
0.8.222023-10-255
0.8.212023-07-195
0.8.202023-05-107
0.8.192023-02-227
0.8.182023-02-017
0.8.172022-09-087
0.8.162022-08-088
0.8.152022-06-159
0.8.142022-05-1711
0.8.132022-03-1613
0.8.122022-02-1612
0.8.112021-12-2012
0.8.102021-11-0911
0.8.92021-09-2911
0.8.82021-09-2713
0.8.72021-08-1112
0.8.62021-06-2212
0.8.52021-06-1012
0.8.42021-04-2111
0.8.32021-03-2312
0.8.22021-03-0213
0.8.12021-01-2713
0.8.02020-12-1613
0.7.62020-12-1613
0.7.52020-11-1813
0.7.42020-10-1913
0.7.32020-10-0714
0.7.22020-09-2815
0.7.12020-09-0214
0.7.02020-07-2813
0.6.122020-07-2213
0.6.112020-07-0713
0.6.102020-06-1113
0.6.92020-06-0414
0.6.82020-05-1412
0.6.72020-05-0415
0.6.62020-04-0914
0.6.52020-04-0615
0.6.42020-03-1015
0.6.32020-02-1815
0.6.22020-01-2715
0.6.12020-01-0214
0.6.02019-12-1715
0.5.172020-03-1713
0.5.162020-01-0214
0.5.152019-12-1715
0.5.142019-12-0916
0.5.132019-11-1414
0.5.122019-10-0114
0.5.112019-08-1214
0.5.102019-06-2515
0.5.92019-05-2817
0.5.82019-04-3018
0.5.72019-03-2617
0.5.62019-03-1319
0.5.52019-03-0519
0.5.42019-02-1217
0.5.32019-01-2217
0.5.22018-12-1917
0.5.12018-12-0317
0.5.02018-11-1317
0.4.262019-04-2914
0.4.252018-09-1217
0.4.242018-05-1619
0.4.232018-04-1919
0.4.222018-04-1620
0.4.212018-03-0720
0.4.202018-02-1420
0.4.192017-11-3020
0.4.182017-10-1819
0.4.172017-09-2120
0.4.162017-08-2419
0.4.152017-08-0816
0.4.142017-07-3117
0.4.132017-07-0618
0.4.122017-07-0318
0.4.112017-05-0319
0.4.102017-03-1520
0.4.92017-01-3120
0.4.82017-01-1320
0.4.72016-12-1520
0.4.62016-11-2220
0.4.52016-11-2121
0.4.42016-10-3118
0.4.32016-10-2519
0.4.22016-09-1720
0.4.12016-09-0921
0.4.02016-09-0821
0.3.62016-08-1021
0.3.52016-06-1023
0.3.42016-05-3123
0.3.32016-05-2723
0.3.22016-04-1824
0.3.12016-03-3124
0.3.02016-03-1125
0.2.22016-02-1723
0.2.12016-01-3023
0.2.02015-12-0223
0.1.72015-11-1722
0.1.62015-10-1622
0.1.52015-10-0720
0.1.42015-09-3020
0.1.32015-09-2519
0.1.22015-08-2019
0.1.12015-08-0419
0.1.02015-07-1019

Source: bugs_by_version.json, fetched 2026-10-11.

All listed bugs sorted by severity

This table has all 66 entries of bugs.json. The order is high, medium/high, medium, low/medium, low and very low. Inside one severity the order is the order of the file. The column "Listed for" gives the first and the last version for which bugs_by_version.json lists the bug, and the number of versions. "Not given" means that the entry has no introduced value.

A bug with conditions applies only when its conditions are met. For an entry with no conditions the docs page says "If no conditions are given, assume that the bug is present." To read the official summary of a bug, look up a version in its range.

Known Solidity compiler bugs by severity, as of 2026-10-11
Bug name and id Severity Introduced Fixed Listed for Conditions Link
TransientStorageClearingHelperCollision
SOL-2026-1
high0.8.280.8.340.8.28 to 0.8.33
(6 versions)
viaIR: true, evmVersion: ">=cancun"post
HighOrderByteCleanStorage
SOL-2016-9
high0.1.60.4.40.1.6 to 0.4.3
(16 versions)
none givenpost
AncientCompiler
SOL-2016-1
highnot given0.3.00.1.0 to 0.2.2
(11 versions)
none givennone
StorageWriteRemovalBeforeConditionalTermination
SOL-2022-7
medium/high0.8.130.8.170.8.13 to 0.8.16
(4 versions)
yulOptimizer: truepost
ExpExponentCleanup
SOL-2018-4
medium/highnot given0.4.250.1.0 to 0.4.24
(43 versions)
none givenpost
CleanBytesHigherOrderBits
SOL-2016-3
medium/highnot given0.3.30.1.0 to 0.3.2
(14 versions)
none givennone
ArrayAccessCleanHigherOrderBits
SOL-2016-2
medium/highnot given0.3.10.1.0 to 0.3.0
(12 versions)
none givennone
InheritanceOrderReversalOnStorageEndWarning
SOL-2026-3
medium0.8.290.8.360.8.29 to 0.8.35
(7 versions)
none givenpost
UnsoundSpillInMutualRecursion
SOL-2026-2
medium0.7.20.8.360.7.2 to 0.8.35
(41 versions)
viaIR: truepost
AbiReencodingHeadOverflowWithStaticArrayCleanup
SOL-2022-6
medium0.5.80.8.160.5.8 to 0.8.15
(46 versions)
ABIEncoderV2: truepost
InlineAssemblyMemorySideEffects
SOL-2022-4
medium0.8.130.8.150.8.13 to 0.8.14
(2 versions)
yulOptimizer: truepost
KeccakCaching
SOL-2021-1
mediumnot given0.8.30.1.0 to 0.8.2
(86 versions)
optimizer: truepost
EmptyByteArrayCopy
SOL-2020-11
mediumnot given0.7.40.1.0 to 0.7.3
(80 versions)
none givenpost
DynamicArrayCleanup
SOL-2020-10
mediumnot given0.7.30.1.0 to 0.7.2
(79 versions)
none givenpost
YulOptimizerRedundantAssignmentBreakContinue
SOL-2020-1
medium0.6.00.6.10.6.0
(1 version)
yulOptimizer: truenone
NestedArrayFunctionCallDecoder
SOL-2018-2
medium0.1.40.4.220.1.4 to 0.4.21
(36 versions)
none givenpost
ECRecoverMalformedInput
SOL-2017-3
mediumnot given0.4.140.1.0 to 0.4.13
(32 versions)
none givennone
OptimizerStateKnowledgeNotResetForJumpdest
SOL-2016-10
medium0.4.50.4.60.4.5
(1 version)
optimizer: truenone
OptimizerStaleKnowledgeAboutSHA3
SOL-2016-8
mediumnot given0.4.30.1.0 to 0.4.2
(21 versions)
optimizer: truenone
MemoryByteArrayElementDeleteClearsWholeWord
SOL-2026-5
low/mediumnot given0.8.370.1.0 to 0.8.36
(120 versions)
viaIR: falsepost
SpillSlotCollisionAcrossMutualRecursion
SOL-2026-4
low/medium0.7.20.8.370.7.2 to 0.8.36
(42 versions)
viaIR: truepost
SignedArrayStorageCopy
SOL-2019-8
low/medium0.4.70.5.100.4.7 to 0.5.9
(30 versions)
none givenpost
LostStorageArrayWriteOnSlotOverflow
SOL-2025-1
low0.1.00.8.320.1.0 to 0.8.31
(115 versions)
none givenpost
VerbatimInvalidDeduplication
SOL-2023-3
low0.8.50.8.230.8.5 to 0.8.22
(18 versions)
none givenpost
FullInlinerNonExpressionSplitArgumentEvaluationOrder
SOL-2023-2
low0.6.70.8.210.6.7 to 0.8.20
(34 versions)
yulOptimizer: truepost
MissingSideEffectsOnSelectorAccess
SOL-2023-1
low0.6.20.8.210.6.2 to 0.8.20
(39 versions)
viaIR: falsepost
DirtyBytesArrayToStorage
SOL-2022-5
low0.0.10.8.150.1.0 to 0.8.14
(98 versions)
none givenpost
FreeFunctionRedefinition
SOL-2020-9
low0.7.10.7.20.7.1
(1 version)
none givennone
MemoryArrayCreationOverflow
SOL-2020-3
low0.2.00.6.50.2.0 to 0.6.4
(60 versions)
none givenpost
privateCanBeOverridden
SOL-2020-2
low0.3.00.5.170.3.0 to 0.5.16
(51 versions)
none givennone
YulOptimizerRedundantAssignmentBreakContinue0.5
SOL-2020-1
low0.5.80.5.160.5.8 to 0.5.15
(8 versions)
yulOptimizer: truenone
ABIEncoderV2LoopYulOptimizer
SOL-2019-10
low0.5.140.5.150.5.14
(1 version)
ABIEncoderV2: true, optimizer: true, yulOptimizer: truenone
ABIEncoderV2CalldataStructsWithStaticallySizedAndDynamicallyEncodedMembers
SOL-2019-9
low0.5.60.5.110.5.6 to 0.5.10
(5 versions)
ABIEncoderV2: truenone
ABIEncoderV2StorageArrayWithMultiSlotElement
SOL-2019-7
low0.4.160.5.100.4.16 to 0.5.9
(21 versions)
ABIEncoderV2: truepost
ABIEncoderV2PackedStorage
SOL-2019-3
low0.5.00.5.70.5.0 to 0.5.6
(7 versions)
ABIEncoderV2: truepost
ABIEncoderV2PackedStorage_0.4.x
SOL-2019-3
low0.4.190.4.260.4.19 to 0.4.25
(7 versions)
ABIEncoderV2: truepost
DoubleShiftSizeOverflow
SOL-2019-1
low0.5.50.5.60.5.5
(1 version)
optimizer: true, evmVersion: ">=constantinople"post
DelegateCallReturnValue
SOL-2017-4
low0.3.00.4.150.3.0 to 0.4.14
(22 versions)
none givennone
SkipEmptyStringLiteral
SOL-2017-2
lownot given0.4.120.1.0 to 0.4.11
(30 versions)
none givennone
ConstantOptimizerSubtraction
SOL-2017-1
lownot given0.4.110.1.0 to 0.4.10
(29 versions)
optimizer: truepost
IdentityPrecompileReturnIgnored
SOL-2016-11
lownot given0.4.70.1.0 to 0.4.6
(25 versions)
none givennone
LibrariesNotCallableFromPayableFunctions
SOL-2016-7
low0.4.00.4.20.4.0 to 0.4.1
(2 versions)
none givennone
SendFailsForZeroEther
SOL-2016-6
lownot given0.4.00.1.0 to 0.3.6
(18 versions)
none givennone
DynamicAllocationInfiniteLoop
SOL-2016-5
lownot given0.3.60.1.0 to 0.3.5
(17 versions)
none givennone
OptimizerClearStateOnCodePathJoin
SOL-2016-4
lownot given0.3.60.1.0 to 0.3.5
(17 versions)
optimizer: truenone
MisorderedNamedParametersInRequireWithCustomErrors
SOL-2026-6
very low0.8.260.8.370.8.26 to 0.8.36
(11 versions)
viaIR: truepost
DataLocationChangeInInternalOverride
SOL-2022-3
very low0.6.90.8.140.6.9 to 0.8.13
(25 versions)
none givenpost
NestedCalldataArrayAbiReencodingSizeValidation
SOL-2022-2
very low0.5.80.8.140.5.8 to 0.8.13
(44 versions)
none givenpost
AbiEncodeCallLiteralAsFixedBytesBug
SOL-2022-1
very low0.8.110.8.130.8.11 to 0.8.12
(2 versions)
none givenpost
UserDefinedValueTypesBug
SOL-2021-4
very low0.8.80.8.90.8.8
(1 version)
none givenpost
SignedImmutables
SOL-2021-3
very low0.6.50.8.90.6.5 to 0.8.8
(24 versions)
none givenpost
ABIDecodeTwoDimensionalArrayMemory
SOL-2021-2
very low0.4.160.8.40.4.16 to 0.8.3
(53 versions)
ABIEncoderV2: truepost
UsingForCalldata
SOL-2020-8
very low0.6.90.6.100.6.9
(1 version)
none givennone
MissingEscapingInFormatting
SOL-2020-7
very low0.5.140.6.80.5.14 to 0.6.7
(12 versions)
ABIEncoderV2: truenone
ArraySliceDynamicallyEncodedBaseType
SOL-2020-6
very low0.6.00.6.80.6.0 to 0.6.7
(8 versions)
ABIEncoderV2: truenone
ImplicitConstructorCallvalueCheck
SOL-2020-5
very low0.4.50.6.80.4.5 to 0.6.7
(48 versions)
none givennone
TupleAssignmentMultiStackSlotComponents
SOL-2020-4
very low0.1.60.6.60.1.6 to 0.6.5
(63 versions)
none givennone
DynamicConstructorArgumentsClippedABIV2
SOL-2019-6
very low0.4.160.5.90.4.16 to 0.5.8
(20 versions)
ABIEncoderV2: truenone
UninitializedFunctionPointerInConstructor
SOL-2019-5
very low0.5.00.5.80.5.0 to 0.5.7
(8 versions)
none givennone
UninitializedFunctionPointerInConstructor_0.4.x
SOL-2019-5
very low0.4.50.4.260.4.5 to 0.4.25
(21 versions)
none givennone
IncorrectEventSignatureInLibraries
SOL-2019-4
very low0.5.00.5.80.5.0 to 0.5.7
(8 versions)
none givennone
IncorrectEventSignatureInLibraries_0.4.x
SOL-2019-4
very low0.3.00.4.260.3.0 to 0.4.25
(33 versions)
none givennone
IncorrectByteInstructionOptimization
SOL-2019-2
very low0.5.50.5.70.5.5 to 0.5.6
(2 versions)
optimizer: truepost
EventStructWrongData
SOL-2018-3
very low0.4.170.4.250.4.17 to 0.4.24
(8 versions)
none givenpost
OneOfTwoConstructorsSkipped
SOL-2018-1
very low0.4.220.4.230.4.22
(1 version)
none givennone
ZeroFunctionSelector
SOL-2017-5
very lownot given0.4.180.1.0 to 0.4.17
(36 versions)
none givennone

Source: bugs.json and bugs_by_version.json, fetched 2026-10-11.

Limits of this page

This page does not test contracts. It shows the entries that the official list names for a compiler version. A compiler version on the list is not proof that a contract has the bug. The docs page describes separate checks "that report whether the smart contract contains the bug or not".

The lookup gives a result only for the 121 versions in the file. For a version that is not in the file it shows a message and no count. Nightly and prerelease builds get no result, because the list does not track them.

The release dates, the counts and the bug data are copies of values in the two files. This page does not show the description and check values of bugs.json. Both files can change after 2026-10-11.

How this page was made

Both files were fetched from raw.githubusercontent.com on 2026-10-11 at the commits named near the top. A script wrote the two tables and the lookup data from the files. No value in these two tables was typed by hand.

A separate check applied one rule to bugs.json. A version has a bug when the entry has no introduced value or the version is at or above introduced, and the version is below fixed. The check compared each version as three whole numbers, so that 0.8.9 is below 0.8.10. For all 121 versions the rule gave the same bug names as bugs_by_version.json.

The data was fetched on 2026-10-11 and can change after that date. This page copies public data. It is not security advice and it is not an audit of any contract.