Hi Thomas, Dmitry,
Thanks for your review comments. My answers are below for your review comments
1873 if( 0 != ret % sizeof(prmap_t)){
1874 break;
1875 }
>> For this it has been thought that mostly read() will return the desired
>> number of bytes, but only in case if something goes wrong and read() will
>> not able to read the data, it will return lesser number of bytes, which
>> contains the partial data of “prmap_t” structure. The reason could be like
>> file is corrupted, in such cases we don’t want to read anymore and feel it’s
>> safe to skip the rest of file.
2) Just interesting, do you really need to set memory to 0 by memset?
>> I thought this it is good to have a clean buffer every time we read
>> something into it, but it’s really not that much required as we are reading
>> a binary data. So I am removing this line from the code.
For rest of the comments I have made correction in the code. The new webrev is
available in the below location
http://cr.openjdk.java.net/~csahu/8151509/webrev.01/
Regards,
Cheleswer
From: Thomas Stüfe [mailto:[email protected]]
Sent: Thursday, March 10, 2016 7:39 PM
To: Dmitry Dmitriev
Cc: Cheleswer Sahu; [email protected];
[email protected]
Subject: Re: RFR[9u-dev]: 8151509: In check_addr0() function pointer is not
updated correctly
(Sorry, pressed Send button too early)
Just wanted to add that
1873 if( 0 != ret % sizeof(prmap_t)){
1874 break;
1875 }
may be a bit harsh, as it skips the entire mapping in case read() stopped
reading in a middle of a record. You could just continue to read until you read
the rest of the record.
Kind Regards, Thomas
On Thu, Mar 10, 2016 at 3:07 PM, Thomas Stüfe <HYPERLINK
"mailto:[email protected]"[email protected]> wrote:
Hi Cheleswer,
thanks for fixing this.
Some more issues:
- 1866 char *mbuff = (char *) calloc(read_chunk, sizeof(prmap_t) + 1);
Why the "+1"? It is unnecessary and causes the allocation to be 200 bytes
larger than necessary.
- 1880 st->print("Warning: Address: " PTR_FORMAT ", Size: %dK, ",p->pr_vaddr,
p->pr_size/1024);
Format specifier for Size is wrong.%d is int, but p->pr_size is size_t.
Theoretical truncation for mappings larger than 4g*1024.
(But I know this coding was there before)
Beside those points, I think both points of Dmitry are valid.
Also, I find
Kind Regards, Thomas
On Thu, Mar 10, 2016 at 1:45 PM, Dmitry Dmitriev <HYPERLINK
"mailto:[email protected]"[email protected]> wrote:
Hi Cheleswer,
Looks good, but I have questions/comments about other code in this function:
1) I think that "::close(fd);" should be inside "if (fd >= 0) {".
2) Just interesting, do you really need to set memory to 0 by memset?
Thanks,
Dmitry
On 10.03.2016 13:43, Cheleswer Sahu wrote:
Hi,
Please review the code changes for
https://bugs.openjdk.java.net/browse/JDK-8151509.
Webrev link: http://cr.openjdk.java.net/~csahu/8151509/
<http://cr.openjdk.java.net/%7Ecsahu/8151509/>
Bug Brief:
In check_addr0(), pointer ”p” is not updated correctly, because of this it was
reading only first two entries from buffer.
Regards,
Cheleswer