<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
</head>
<body dir="ltr">
<div id="divtagdefaultwrapper" style="font-size:12pt;color:#000000;font-family:Calibri,Arial,Helvetica,sans-serif;">
<p>Hello,</p>
<p><br>
</p>
<p>I am using LLDB 3.9 on Linux Ubuntu. I am loading a 5GiB core which is located on Windows file share mounted on Linux via mount.cifs. I see that we successfully allocated memory and are trying to fill it in one read. Unfortunately pread returns 2GiB and
 we never check for short read here.</p>
<p><br>
</p>
<p>I think we could combine this code with previous block "<span>#if defined (MAX_READ_SIZE)" if we simply check for short read here (bytes_read too small) and loop until all the buffer is filled.</span></p>
<p><span><br>
</span></p>
<p><span>Thanks,</span></p>
<p><span>Eugene</span></p>
<p><br>
</p>
<p></p>
<div><span style="font-family: "Courier New", monospace; font-size: 9pt;">#ifndef _WIN32</span></div>
<div><span style="font-family: "Courier New", monospace; font-size: 9pt;">    int fd = GetDescriptor();</span></div>
<div><span style="font-family: "Courier New", monospace; font-size: 9pt;">    if (fd != kInvalidDescriptor)</span></div>
<div><span style="font-family: "Courier New", monospace; font-size: 9pt;">    {</span></div>
<div><span style="font-family: "Courier New", monospace; font-size: 9pt;">        ssize_t bytes_read = -1;</span></div>
<div><span style="font-family: "Courier New", monospace; font-size: 9pt;">        do</span></div>
<div><span style="font-family: "Courier New", monospace; font-size: 9pt;">        {</span></div>
<div><span style="font-family: "Courier New", monospace; font-size: 9pt;">           
<span style="background-color: rgb(255, 255, 0);">bytes_read</span> = ::pread (fd, buf, num_bytes, offset);</span></div>
<div><span style="font-family: "Courier New", monospace; font-size: 9pt;">        } while (bytes_read < 0 && errno == EINTR);</span></div>
<div><br>
</div>
<div><span style="font-family: "Courier New", monospace; font-size: 9pt;">        if (bytes_read < 0)</span></div>
<div><span style="font-family: "Courier New", monospace; font-size: 9pt;">        {</span></div>
<div><span style="font-family: "Courier New", monospace; font-size: 9pt;">            num_bytes = 0;</span></div>
<div><span style="font-family: "Courier New", monospace; font-size: 9pt;">            error.SetErrorToErrno();</span></div>
<div><span style="font-family: "Courier New", monospace; font-size: 9pt;">        }</span></div>
<div><span style="font-family: "Courier New", monospace; font-size: 9pt;">        else</span></div>
<div><span style="font-family: "Courier New", monospace; font-size: 9pt;">        {</span></div>
<div><span style="font-family: "Courier New", monospace; font-size: 9pt;">            offset += bytes_read;</span></div>
<div><span style="font-family: "Courier New", monospace; font-size: 9pt;">            num_bytes = bytes_read;</span></div>
<div><span style="font-family: "Courier New", monospace; font-size: 9pt;">        }</span></div>
<div><span style="font-family: "Courier New", monospace; font-size: 9pt;">    }</span></div>
<div><br>
</div>
<p></p>
<div id="Signature">
<p>Sent from <a href="http://aka.ms/weboutlook" id="LPNoLP">Outlook</a><br>
</p>
</div>
</div>
</body>
</html>