Bug 1068781
Summary: | glfs_read fails for large read | ||||||
---|---|---|---|---|---|---|---|
Product: | [Community] GlusterFS | Reporter: | Joel Rausch <jsrausch.sojourn> | ||||
Component: | libgfapi | Assignee: | GlusterFS Bugs list <gluster-bugs> | ||||
Status: | CLOSED CURRENTRELEASE | QA Contact: | Sudhir D <sdharane> | ||||
Severity: | unspecified | Docs Contact: | |||||
Priority: | unspecified | ||||||
Version: | 3.4.2 | CC: | bugs, gluster-bugs, kelly.burkhart, kkeithle | ||||
Target Milestone: | --- | ||||||
Target Release: | --- | ||||||
Hardware: | Unspecified | ||||||
OS: | Linux | ||||||
Whiteboard: | |||||||
Fixed In Version: | Doc Type: | Bug Fix | |||||
Doc Text: | Story Points: | --- | |||||
Clone Of: | Environment: | ||||||
Last Closed: | 2014-10-14 14:18:21 UTC | Type: | Bug | ||||
Regression: | --- | Mount Type: | --- | ||||
Documentation: | --- | CRM: | |||||
Verified Versions: | Category: | --- | |||||
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||
Cloudforms Team: | --- | Target Upstream Version: | |||||
Embargoed: | |||||||
Attachments: |
|
gfapi was substantially updated in 3.4.3. If you are using 3.4.3 or later and this is still a problem please file a new bugreport. Thanks |
Created attachment 866271 [details] Program capable of reproducing problem Description of problem: Reading a >32MB file with a single glfs_read call can cause a segmentation fault in the iov_copy function. It appears that some, but not all of the iov_base pointers were invalid. Core was generated by `./tst'. Program terminated with signal 11, Segmentation fault. #0 __memcpy_ssse3_back () at ../sysdeps/x86_64/multiarch/memcpy-ssse3-back.S:1579 1579 ../sysdeps/x86_64/multiarch/memcpy-ssse3-back.S: No such file or directory. in ../sysdeps/x86_64/multiarch/memcpy-ssse3-back.S (gdb) bt #0 __memcpy_ssse3_back () at ../sysdeps/x86_64/multiarch/memcpy-ssse3-back.S:1579 #1 0x00007f3634b0fa7e in iov_copy (dst=0x7fff37ada3e0, dcnt=1, src= 0x7f36200e3b70, scnt=272) at ../../libglusterfs/src/common-utils.h:386 #2 0x00007f3634b112e8 in glfs_preadv (glfd=0x633f90, iovec=0x7fff37ada3e0, iovcnt=1, offset=0, flags=0) at glfs-fops.c:482 #3 0x00007f3634b113c9 in glfs_read (glfd=0x633f90, buf=0x7f361ca45010, count= 35651584, flags=0) at glfs-fops.c:511 #4 0x00000000004012f4 in main () at /home/TRADEBOT/jrausch/source/tradebot/vc/tst/tst.cpp:47 (gdb) f 1 #1 0x00007f3634b0fa7e in iov_copy (dst=0x7fff37ada3e0, dcnt=1, src= 0x7f36200e3b70, scnt=272) at ../../libglusterfs/src/common-utils.h:386 386 memcpy (dst[d_i].iov_base + d_ii, src[s_i].iov_base + s_ii, (gdb) p (char*) src[s_i].iov_base $1 = 0x7f362aaf1000 <Address 0x7f362aaf1000 out of bounds> (gdb) p (char*) src[s_i - 1].iov_base $2 = 0x7f3616f00000 "" (gdb) p (char*) src[s_i + 1].iov_base $3 = 0x7f362aa71000 <Address 0x7f362aa71000 out of bounds> (gdb) p (char*) src[s_i + 2].iov_base $4 = 0x7f362aab1000 <Address 0x7f362aab1000 out of bounds> (gdb) p s_i $5 = 47 (gdb) p scnt $6 = 272