วงแหวนเว็บ

neizod's speculation

insufficient data for meaningful answer

บั๊กตัวตัดคำ Swath

Monday, September 22, 2014, 07:57 PM

+Theppitak Karoonboonyanan เจอ bug ใน swath ครับ เกี่ยวกับบรรทัดที่ยาวๆ แล้วมีภาษาไทยปนอังกฤษ เวลาสั่งตัดคำจะโดนฟ้องว่า core dump ลอง reproduce ได้ตามนี้

เนื้อหาในไฟล์ testcase.txt

ถ้าเป็นย่อหน้าภาษาไทยยาวๆ แม้จะยาวแค่ไหนก็ดูเหมือนจะไม่มีปัญหาอะไร แต่หากลองดัดจริตพิมพ์ไทยคำ English คำ ก็จะทำให้เกิดปัญหาใหญ่เป็นคลื่นใต้น้ำ ดังเช่นย่อหน้านี้ที่พิมพ์ขึ้นมาเพื่อแสดงให้เห็นถึงข้อผิดพลาดดังกล่าว โดยทั้งย่อหน้ามีความยาวที่เจ็ดร้อยยี่สิบสามตัวอักษร หากยาวน้อยกว่านี้ไปสักสองประโยคก็จะไม่ได้รับผลกระทบ แต่พอเลยค่านี้ไปแล้วจะเจอ segfault ทันที โอ้ภาษา C นี่มันช่างลึกลับเสียจริง อันที่จริงใจความทั้งหมดได้กล่าวเรียบร้อยในสองประโยคแรกแล้ว แต่ต้องพิมพ์เนื้อหาต่อจากนี้ไว้เพื่อให้มีจำนวนตัวอักษรมากพอ ไม่เช่นนั้นก็จะไม่เห็นข้อผิดพลาดดังกล่าว อันที่จริงเราก็เหนื่อยที่จะต้องมาคิดคำสร้างแบบทดสอบแล้ว ทำไมภาษาไทยไม่มีลอเร็มอิบซัมให้ใช้บ้างนะ แต่ไม่เป็นไรหรอกขอแค่อดใจอ่านต่ออีกหนึ่งประโยค ก็จะพบกับข้อผิดพลาดนี้แล้ว

แล้วสั่ง

$ cat testcase.txt | swath -u u,u -f latex

มันจะตัดคำไปจนถึงท้ายๆ ตรงนี้แล้วบึ้มครับ

ขอ{\wbr}แค่{\wbr}อด{\wbr}ใจ{\wbr}อ่าน{\wbr}ต่อ{\wbr}อีก{\wbr}หนึ่ง{\wbr}ปSegmentation fault (core dumped)

ข้อมูลระบบ:

$ swath --version
swath 0.5.2
$ uname -a
Linux nzx 3.13.0-35-generic #62-Ubuntu SMP Fri Aug 15 01:58:42 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

Originally published on: Google+

neizod

author