1

I have a strange problem with my Lenovo T450s. In December, the SSD that was build in to it started acting up. I noticed it when my /boot/initramfs-linux.img file was corrupted and could not be started anymore. Via a rescue shell I managed to repair the file and got the system back up. SMART did not show any errors. A couple days later it broke utterly - I still saw GRUB but neither Linux nor Windows booted up anymore, it looked like the partition tables got corrupted this time. Using the built-in Lenovo hardware scan I also saw a bunch of disk errors.

So I got a new SSD, set it up and have been using it for ~2 weeks. Now today I got a "bad instruction" segfault when running mysqld --version. Reinstalling mariadb fixed this. Then some time later a similar issue occurred, this time I paid more attention:


$ kmail
kmail: error while loading shared libraries: /usr/lib/libx264.so.148: invalid ELF header

$ md5sum /usr/lib/libx264.so.148 
2a56d1c8db30bc67086aa5f6a2f82b74  /usr/lib/libx264.so.148

$ file /usr/lib/libx264.so.148 
/usr/lib/libx264.so.148: data

$ ls -latr /usr/lib/libx264.so.148
-rwxr-xr-x 1 root root 1027784 Jun 27  2017 /usr/lib/libx264.so.148

$ cp /usr/lib/libx264.so.148 /tmp

$ pacman -Qoo /usr/lib/libx264.so.148 
/usr/lib/libx264.so.148 is owned by libx264 2:148.20170521-1

$ sudo pacman -S libx264
warning: libx264-2:148.20170521-1 is up to date -- reinstalling
resolving dependencies...
looking for conflicting packages...

Packages (1) libx264-2:148.20170521-1

Total Download Size:   0.36 MiB
Total Installed Size:  1.05 MiB
Net Upgrade Size:      0.00 MiB

:: Proceed with installation? [Y/n] 
:: Retrieving packages...
 libx264-2:148.20170521-1-x86_64                                                         369.6 KiB  89.1K/s 00:04 [####################################################################] 100%
(1/1) checking keys in keyring                                                                                    [####################################################################] 100%
(1/1) checking package integrity                                                                                  [####################################################################] 100%
(1/1) loading package files                                                                                       [####################################################################] 100%
(1/1) checking for file conflicts                                                                                 [####################################################################] 100%
(1/1) checking available disk space                                                                               [####################################################################] 100%
:: Processing package changes...
(1/1) reinstalling libx264                                                                                        [####################################################################] 100%
:: Running post-transaction hooks...
(1/1) Arming ConditionNeedsUpdate...

$ ls -latr /usr/lib/libx264.so.148
-rwxr-xr-x 1 root root 1027784 Jun 27  2017 /usr/lib/libx264.so.148

$ md5sum /usr/lib/libx264.so.148
32ef6d83b64fa4ab508c0ab565f426eb  /usr/lib/libx264.so.148

$ file /usr/lib/libx264.so.148
/usr/lib/libx264.so.148: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=06887d32d7c6bafc62ec7093c2527ebeaba115e3, stripped

$ xxd /usr/lib/libx264.so.148 > /tmp/after.hex

$ xxd /tmp/libx264.so.148 > /tmp/before.hex

$ diff -u /tmp/before.hex /tmp/after.hex 
--- /tmp/before.hex     2018-01-09 22:56:52.027209874 +0100
+++ /tmp/after.hex      2018-01-09 22:58:36.527221442 +0100
 -1,43267 +1,43267 @@
-00000000: 0000 0000 0000 0000 0000 0000 0000 0000  ................
-00000010: 0000 0000 0000 0000 0000 0000 0000 0000  ................
-00000020: 0000 0000 0000 0000 0000 0000 0000 0000  ................
-00000030: 0000 0000 0000 0000 0000 0000 0000 0000  ................
-00000040: 0000 0000 0000 0000 0000 0000 0000 0000  ................
+00000000: 7f45 4c46 0201 0100 0000 0000 0000 0000  .ELF............
+00000010: 0300 3e00 0100 0000 307f 0000 0000 0000  ..>.....0.......
+00000020: 4000 0000 0000 0000 08a8 0f00 0000 0000  @...............
+00000030: 0000 0000 4000 3800 0700 4000 1b00 1a00  [email protected]...@.....
+00000040: 0100 0000 0500 0000 0000 0000 0000 0000  ................
...

More parts of the file are broken in this way, i.e. zero'ed out.

I'm at a loss - in all the years I've never seen such an issue. The fact that this is happening so quickly after I got a new SSD makes me believe the SSD isn't actually at fault. What could it be? Has anyone ever seen something like that?

I'm running the latest ArchLinux 4.14.12-1 kernel. Here's some hardware info:


$ grep "model name" /proc/cpuinfo
Intel(R) Core(TM) i7-5600U CPU @ 2.60GHz

$ lspci 
00:00.0 Host bridge: Intel Corporation Broadwell-U Host Bridge -OPI (rev 09)
00:02.0 VGA compatible controller: Intel Corporation HD Graphics 5500 (rev 09)
00:03.0 Audio device: Intel Corporation Broadwell-U Audio Controller (rev 09)
00:14.0 USB controller: Intel Corporation Wildcat Point-LP USB xHCI Controller (rev 03)
00:16.0 Communication controller: Intel Corporation Wildcat Point-LP MEI Controller #1 (rev 03)
00:19.0 Ethernet controller: Intel Corporation Ethernet Connection (3) I218-LM (rev 03)
00:1b.0 Audio device: Intel Corporation Wildcat Point-LP High Definition Audio Controller (rev 03)
00:1c.0 PCI bridge: Intel Corporation Wildcat Point-LP PCI Express Root Port #6 (rev e3)
00:1c.1 PCI bridge: Intel Corporation Wildcat Point-LP PCI Express Root Port #3 (rev e3)
00:1c.4 PCI bridge: Intel Corporation Wildcat Point-LP PCI Express Root Port #5 (rev e3)
00:1d.0 USB controller: Intel Corporation Wildcat Point-LP USB EHCI Controller (rev 03)
00:1f.0 ISA bridge: Intel Corporation Wildcat Point-LP LPC Controller (rev 03)
00:1f.2 SATA controller: Intel Corporation Wildcat Point-LP SATA Controller [AHCI Mode] (rev 03)
00:1f.3 SMBus: Intel Corporation Wildcat Point-LP SMBus Controller (rev 03)
00:1f.6 Signal processing controller: Intel Corporation Wildcat Point-LP Thermal Management Controller (rev 03)
02:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. RTS5227 PCI Express Card Reader (rev 01)
03:00.0 Network controller: Intel Corporation Wireless 7265 (rev 59)
04:00.0 3D controller: NVIDIA Corporation GM108M [GeForce 940M] (rev a2)

$ sudo smartctl -a /dev/sda
smartctl 6.6 2017-11-05 r4594 [x86_64-linux-4.14.12-1-ARCH] (local build)
Copyright (C) 2002-17, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Samsung based SSDs
Device Model:     Samsung SSD 850 PRO 512GB
Serial Number:    S39FNX0J612952B
LU WWN Device Id: 5 002538 d420b9653
Firmware Version: EXM04B6Q
User Capacity:    512,110,190,592 bytes [512 GB]
Sector Size:      512 bytes logical/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-2, ATA8-ACS T13/1699-D revision 4c
SATA Version is:  SATA 3.1, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is:    Tue Jan  9 23:24:18 2018 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:  (0x00) Offline data collection activity
                                        was never started.
                                        Auto Offline Data Collection: Disabled.
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:                    (0x53) SMART execute Offline immediate.
                                        Auto Offline data collection on/off support.
                                        Suspend Offline collection upon new
                                        command.
                                        No Offline surface scan supported.
                                        Self-test supported.
                                        No 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:        ( 265) minutes.
SCT capabilities:              (0x003d) SCT Status supported.
                                        SCT Error Recovery Control supported.
                                        SCT Feature Control supported.
                                        SCT Data Table supported.

SMART Attributes Data Structure revision number: 1
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  5 Reallocated_Sector_Ct   0x0033   100   100   010    Pre-fail  Always       -       0
  9 Power_On_Hours          0x0032   099   099   000    Old_age   Always       -       109
 12 Power_Cycle_Count       0x0032   099   099   000    Old_age   Always       -       26
177 Wear_Leveling_Count     0x0013   099   099   000    Pre-fail  Always       -       1
179 Used_Rsvd_Blk_Cnt_Tot   0x0013   100   100   010    Pre-fail  Always       -       0
181 Program_Fail_Cnt_Total  0x0032   100   100   010    Old_age   Always       -       0
182 Erase_Fail_Count_Total  0x0032   100   100   010    Old_age   Always       -       0
183 Runtime_Bad_Block       0x0013   100   100   010    Pre-fail  Always       -       0
187 Uncorrectable_Error_Cnt 0x0032   100   100   000    Old_age   Always       -       0
190 Airflow_Temperature_Cel 0x0032   067   055   000    Old_age   Always       -       33
195 ECC_Error_Rate          0x001a   200   200   000    Old_age   Always       -       0
199 CRC_Error_Count         0x003e   100   100   000    Old_age   Always       -       0
235 POR_Recovery_Count      0x0012   099   099   000    Old_age   Always       -       1
241 Total_LBAs_Written      0x0032   099   099   000    Old_age   Always       -       1665945979

SMART Error Log Version: 1
No Errors Logged

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%       107         -

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
  255        0    65535  Read_scanning was never started
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.

$ mount | grep /dev/sda
/dev/sda3 on / type ext4 (rw,noatime,discard,data=ordered)
/dev/sda4 on /home type ext4 (rw,noatime,discard,data=ordered)

Edit: I ran all the hardware tests available through the Lenovo hardware check. Nothing was found anywhere...

1
  • 1
    If there is a process that writes frequently to specific locations, it could wear out cells more quickly, despite built-in leveling firmware. Jan 9, 2018 at 23:17

0

You must log in to answer this question.