Zend certified PHP/Magento developer

smartctl looks like it’s giving incorrect results, is my SSD dying?

While backing up some files today, I noticed that btrfs complained that some blocks on my Crucial MX500 1TB SSD didn’t have the correct checksum. I ran a btrfs scrub which reported this:

● btrfs-scrub@-.service - Btrfs scrub on /
     Loaded: loaded (/usr/lib/systemd/system/btrfs-scrub@.service; static; vendor preset: disabled)
     Active: failed (Result: exit-code) since Fri 2019-12-06 17:22:25 CET; 3h 56min ago
TriggeredBy: ● btrfs-scrub@-.timer
    Process: 4046 ExecStart=/usr/bin/btrfs scrub start -B / (code=exited, status=3)
   Main PID: 4046 (code=exited, status=3)

dec 06 17:22:25 redacted btrfs[4046]: Status:           finished
dec 06 17:22:25 redacted btrfs[4046]: Duration:         0:16:05
dec 06 17:22:25 redacted btrfs[4046]: Total to scrub:   308.05GiB
dec 06 17:22:25 redacted btrfs[4046]: Rate:             320.15MiB/s
dec 06 17:22:25 redacted btrfs[4046]: Error summary:    csum=10
dec 06 17:22:25 redacted btrfs[4046]:   Corrected:      0
dec 06 17:22:25 redacted btrfs[4046]:   Uncorrectable:  10
dec 06 17:22:25 redacted btrfs[4046]:   Unverified:     0
dec 06 17:22:25 redacted systemd[1]: btrfs-scrub@-.service: Main process exited, code=exited, status=3/NOTIMPLEMENTED
dec 06 17:22:25 redacted systemd[1]: btrfs-scrub@-.service: Failed with result 'exit-code'.

So it looks like only 10 blocks were corrupted, which made me think that it wasn’t actually a hardware error but just some bug. Just in case I ran a couple of SMART tests (two short and two offline). After that, the output of smartctl looked like this:

smartctl 7.0 2018-12-30 r4883 [x86_64-linux-5.4.1-2-ck] (local build)
Copyright (C) 2002-18, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Crucial/Micron BX/MX1/2/3/500, M5/600, 1100 SSDs
Device Model:     CT1000MX500SSD1
Serial Number:    1845E1D544F0
LU WWN Device Id: 5 00a075 1e1d544f0
Firmware Version: M3CR023
User Capacity:    1 000 204 886 016 bytes [1,00 TB]
Sector Sizes:     512 bytes logical, 4096 bytes physical
Rotation Rate:    Solid State Device
Form Factor:      2.5 inches
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ACS-3 T13/2161-D revision 5
SATA Version is:  SATA 3.3, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is:    Fri Dec  6 21:14:57 2019 CET
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

General SMART Values:
Offline data collection status:  (0x82) Offline data collection activity
                    was completed without error.
                    Auto Offline Data Collection: Enabled.
Self-test execution status:      (   0) The previous self-test routine completed
                    without error or no self-test has ever 
                    been run.
Total time to complete Offline 
data collection:        (    0) seconds.
Offline data collection
capabilities:            (0x7b) SMART execute Offline immediate.
                    Auto Offline data collection on/off support.
                    Suspend Offline collection upon new
                    command.
                    Offline surface scan supported.
                    Self-test supported.
                    Conveyance Self-test supported.
                    Selective Self-test supported.
SMART capabilities:            (0x0003) Saves SMART data before entering
                    power-saving mode.
                    Supports SMART auto save timer.
Error logging capability:        (0x01) Error logging supported.
                    General Purpose Logging supported.
Short self-test routine 
recommended polling time:    (   2) minutes.
Extended self-test routine
recommended polling time:    (  30) minutes.
Conveyance self-test routine
recommended polling time:    (   2) minutes.
SCT capabilities:          (0x0031) SCT Status supported.
                    SCT Feature Control supported.
                    SCT Data Table supported.

SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x002f   100   100   000    Pre-fail  Always       -       0
  5 Reallocate_NAND_Blk_Cnt 0x0032   100   100   010    Old_age   Always       -       0
  9 Power_On_Hours          0x0032   100   100   000    Old_age   Always       -       1266
 12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       1820
171 Program_Fail_Count      0x0032   100   100   000    Old_age   Always       -       0
172 Erase_Fail_Count        0x0032   100   100   000    Old_age   Always       -       0
173 Ave_Block-Erase_Count   0x0032   100   100   000    Old_age   Always       -       8
174 Unexpect_Power_Loss_Ct  0x0032   100   100   000    Old_age   Always       -       69
180 Unused_Reserve_NAND_Blk 0x0033   000   000   000    Pre-fail  Always       -       37
183 SATA_Interfac_Downshift 0x0032   100   100   000    Old_age   Always       -       0
184 Error_Correction_Count  0x0032   100   100   000    Old_age   Always       -       0
187 Reported_Uncorrect      0x0032   100   100   000    Old_age   Always       -       0
194 Temperature_Celsius     0x0022   057   045   000    Old_age   Always       -       43 (Min/Max 0/55)
196 Reallocated_Event_Count 0x0032   100   100   000    Old_age   Always       -       0
197 Current_Pending_Sector  0x0032   100   100   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0030   100   100   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x0032   100   100   000    Old_age   Always       -       0
202 Percent_Lifetime_Remain 0x0030   100   100   001    Old_age   Offline      -       0
206 Write_Error_Rate        0x000e   100   100   000    Old_age   Always       -       0
210 Success_RAIN_Recov_Cnt  0x0032   100   100   000    Old_age   Always       -       0
246 Total_Host_Sector_Write 0x0032   100   100   000    Old_age   Always       -       5740642566
247 Host_Program_Page_Count 0x0032   100   100   000    Old_age   Always       -       93790426
248 FTL_Program_Page_Count  0x0032   100   100   000    Old_age   Always       -       97088644

SMART Error Log Version: 1
Warning: ATA error count 0 inconsistent with error log pointer 2

ATA Error Count: 0
    CR = Command Register [HEX]
    FR = Features Register [HEX]
    SC = Sector Count Register [HEX]
    SN = Sector Number Register [HEX]
    CL = Cylinder Low Register [HEX]
    CH = Cylinder High Register [HEX]
    DH = Device/Head Register [HEX]
    DC = Device Command Register [HEX]
    ER = Error register [HEX]
    ST = Status register [HEX]
Powered_Up_Time is measured from power on, and printed as
DDd+hh:mm:SS.sss where DD=days, hh=hours, mm=minutes,
SS=sec, and sss=millisec. It "wraps" after 49.710 days.

Error -1 occurred at disk power-on lifetime: 0 hours (0 days + 0 hours)
  When the command that caused the error occurred, the device was in an unknown state.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  00 ec 00 00 00 00 00

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  ec 00 00 00 00 00 00 00      00:00:00.000  IDENTIFY DEVICE
  ec 00 00 00 00 00 00 00      00:00:00.000  IDENTIFY DEVICE
  ec 00 00 00 00 00 00 00      00:00:00.000  IDENTIFY DEVICE
  ec 00 00 00 00 00 00 00      00:00:00.000  IDENTIFY DEVICE
  c8 00 00 00 00 00 00 00      00:00:00.000  READ DMA

SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Short offline       Completed without error       00%      1266         -
# 2  Short offline       Completed without error       00%      1263         -

SMART Selective self-test log data structure revision number 1
 SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
    1        0        0  Not_testing
    2        0        0  Not_testing
    3        0        0  Not_testing
    4        0        0  Not_testing
    5        0        0  Not_testing
Selective self-test flags (0x0):
  After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.

So the drive passed the tests, reports a Raw_Read_Error_Rate of 0 and zero ATA errors, but smartctl still displays a mysterious error -1 that happened at 0 hours.

Is my drive actually about to die or is it just a glitch?