Chào mừng đến Arcane Weekly! Trong góc Linux problems what bother me (vấn đề Linux khiến tôi băn khoăn) hôm nay, tôi muốn nói về một usecase khá tò mò. Vậy, bạn có môi trường desktop Plasma, và bạn dùng trình quản lý file Dolphin. Bạn dùng nó truy cập Windows share qua Samba. Sau đó, bạn muốn phát một clip video lạ, lưu trên Samba share đó, và mở nó trong VLC. Đôi khi chạy, đôi khi không.
Tôi gặp vấn đề này vài tháng gần đây - và nó dường như không bị giới hạn ở phiên bản Plasma cụ thể nào, mặc dù tôi thấy chủ yếu trong các bản sau - như Plasma 5.17 và 5.18. Điều đã cải thiện khá nhiều, đặc biệt là toàn bộ việc caching cục bộ, nhưng vấn đề phát gián đoạn vẫn tồn tại. Bạn thử phát file, và đơn giản là không có gì xảy ra. Nhưng dịp khác, nó chạy ngon lành. Hãy debug.
Vấn đề chi tiết (Problem in more detail)
Vì không có gì thực sự chỉ ra gì sai sau hậu trường trong VLC - vì nó đơn giản không phát file, chúng ta cần thêm thông tin. Cách tốt nhất là khởi chạy trình phát media từ dòng lệnh, và kiểm tra lỗi. Lo and behold (kìa nó đây), bạn nhận được:
smb stream error: read failed (Software caused connection abort)
Nó không nói nhiều - và Internet có nhiều chia sẻ về chủ đề này, nhưng hầu hết vấn đề và giải pháp đề xuất không dường như quyết định. Tuy nhiên, nó chỉ ra vấn đề với đọc dữ liệu. Tôi đoán, Dolphin đang cố gắng lấy một chunk dữ liệu từ share, nhưng cách nào đó, nó không chạy. Một gợi ý ở đó, và chúng ta đi khám phá.
Giải pháp (Solution)
Sau nhiều đào bới, tôi tìm thấy một bug VLC, dường như ghim nó lại. Vấn đề dường như xảy ra trong các build mới của trình phát, cụ thể phiên bản 3.0.8 trở lên. Điều này trùng hợp với nhiều thay đổi được giới thiệu trong Plasma, làm phức tạp vấn đề. Hơn nữa, vấn đề - mặc dù cụ thể VLC - cũng cụ thể Plasma, vì cùng build VLC chạy tốt trong Xfce và Gnome desktop, dùng GVFS cho kết nối remote, trái với KIO dùng trong Plasma.
VLC 3.0.8 thay đổi giá trị prefetch read - dường như kích hoạt hành vi lạ trong Plasma. Bạn có thể kiểm tra và điều chỉnh giá trị trong Preferences của VLC. Show all settings > Streams filters > prefetch. Mặc định, bạn sẽ thấy Buffer size đặt 16 KB trong khi Read size đặt 16 MB. Nếu bạn đổi giá trị Read khớp với giá trị Buffer, và khởi động lại VLC, nó sẽ hành xử bình thường và phát file từ Samba share không còn lỗi connection abort.

Kết luận
Cảm ơn lớn người thực sự tìm ra cái này - avatar Harvester khá thích hợp, vì người đó đào bới và tìm ra giải pháp, ha ha, hi hi. Bây giờ, chúng ta có hai yếu tố. Phiên bản VLC đóng vai trò. Tuy nhiên, vấn đề cũng chỉ Plasma, cộng với xảy ra ở phiên bản mới, mặc dù chúng ta không thể tách biệt sự phát triển song song của cả hai framework, điều sẽ giải thích tại sao bạn không thể hoặc không chứng kiến điều này trong bản Plasma cũ. Điều này có nghĩa là ba điều kiện cần xảy ra để bạn thấy vấn đề này. Vấn đề compound (phức hợp) không bao giờ vui để troubleshoot.
Tôi hy vọng remote share connectivity stack trong Plasma sẽ được sửa hoàn toàn sớm, vì nó hiện đang tụt hậu các desktop environment khác, vì ở đó, không cần lo giá trị buffer/read trình phát media có thể đặt. Nó minh bạch hơn nhiều, và nên như vậy. Bug tracker hữu ích, nhưng tôi sợ không quá nhiều người sẽ thấy nó, cộng với điều kiện bug cơ bản vẫn còn. Nhưng hy vọng điều này giải quyết vấn đề của bạn, và chúng ta xong ở đây.
Chúc vui.