RFR: 8213622 - Windows VS2013 build failure - "'snprintf': identifier not found"
Michal Vala
mvala at redhat.com
Tue Nov 13 09:32:06 UTC 2018
Hi,
On 11/13/18 1:08 AM, JC Beyler wrote:
> Hi all,
>
> @Mark: good point, fixed in the new webrev
> @David: also good point, just because originally it was written differently
> and I moved the code to this format and didn't move the +1 to the "right"
> spot
> @Michal: do you mind if I take over the bug and push this fix, could you
> review it as well?
Please, take it. I'm not jdk reviewer nor have anough C++ skills to do a
reviews. I don't see any issue there. I've also tried to build it with VS2013
and it works fine. Thanks!
>
> Here is the new webrev:
> http://cr.openjdk.java.net/~jcbeyler/8213622/webrev.01/
> Here is the bug: https://bugs.openjdk.java.net/browse/JDK-8213622
>
> Thanks,
> Jc
>
> On Mon, Nov 12, 2018 at 2:08 PM David Holmes <david.holmes at oracle.com>
> wrote:
>
>> Hi Jc,
>>
>> This seems okay to me. Only minor query is why you do the +1 (presumably
>> for terminating NUL) on the return_len instead of len ?
>>
>> Thanks,
>> David
>>
>> On 13/11/2018 7:11 AM, JC Beyler wrote:
>>> Hi all,
>>>
>>> I created this change instead:
>>> http://cr.openjdk.java.net/~jcbeyler/8213622/webrev.00/
>>> <http://cr.openjdk.java.net/%7Ejcbeyler/8213622/webrev.00/>
>>>
>>> It removes the sprintf calls for strlen and strncpy calls. I checked
>>> that the code works if I force an error on GetObjectClass for example:
>>>
>>> FATAL ERROR in native method: GetObjectClass : Return is NULL
>>> at
>>>
>> nsk.share.gc.lock.CriticalSectionTimedLocker.criticalSection(CriticalSectionTimedLocker.java:47)
>>> at
>>>
>> nsk.share.gc.lock.CriticalSectionLocker$1.run(CriticalSectionLocker.java:56)
>>> at nsk.share.gc.lock.jniref.JNILocalRefLocker.criticalNative(Native
>> Method)
>>> at
>>>
>> nsk.share.gc.lock.jniref.JNILocalRefLocker.criticalSection(JNILocalRefLocker.java:44)
>>> at
>>>
>> nsk.share.gc.lock.CriticalSectionTimedLocker.criticalSection(CriticalSectionTimedLocker.java:47)
>>> at
>>>
>> nsk.share.gc.lock.CriticalSectionLocker$1.run(CriticalSectionLocker.java:56)
>>> at java.lang.Thread.run(java.base at 12-internal/Thread.java:835)
>>>
>>> I'll pass it through the submit repo if this looks like a better fix.
>>>
>>> Let me know what you think,
>>> Jc
>>>
>>> On Sun, Nov 11, 2018 at 10:38 PM JC Beyler <jcbeyler at google.com
>>> <mailto:jcbeyler at google.com>> wrote:
>>>
>>> Hi all,
>>>
>>> If I've caught up with the conversation, it sounds like:
>>> - My code breaks VS2013 build but that soon that won't be
>> supported
>>> - We can't just do a renaming macro due to my use of sprintf with
>>> an empty buffer
>>> - So we need to either do what was suggested by Kim:
>>> "That first snprintf call could be rewritten using several calls to
>>> strlen to calculate the needed size in some different manner. The
>>> later call could also be rewritten to use several calls to strcpy
>>> rather than snprintf."
>>> Or something to that effect
>>>
>>> I can work on a fix that will handle this if we want, I'm just not
>>> sure if that's the path that is being recommended here though. It
>>> seems that in this particular case, it is not really hard to fix the
>>> code for now; the day VS2013 is no longer build-able by other pieces
>>> of code we can come back to this solution. To be honest, the reason
>>> this is like this is due to not being able to have C++ strings when
>>> I tried initially. The day we can have those, then this code can
>>> become even simpler.
>>>
>>> Let me know what you think and would prefer,
>>> Jc
>>>
>>> On Sun, Nov 11, 2018 at 9:01 PM David Holmes
>>> <david.holmes at oracle.com <mailto:david.holmes at oracle.com>> wrote:
>>>
>>> Hi Michal,
>>>
>>> On 12/11/2018 2:18 PM, Michal Vala wrote:
>>> >
>>> >
>>> > On 11/10/18 12:07 AM, David Holmes wrote:
>>> >> cc'ing JC Beyler as this was his code.
>>> >>
>>> >> On 10/11/2018 4:35 AM, Kim Barrett wrote:
>>> >>>> On Nov 9, 2018, at 11:43 AM, Michal Vala <mvala at redhat.com
>>> <mailto:mvala at redhat.com>> wrote:
>>> >>>>
>>> >>>> Hi,
>>> >>>>
>>> >>>> please review following patch fixing build failure on
>>> Windows with
>>> >>>> VS2013 toolchain.
>>> >>
>>> >> Not sure we're still supporting VS2013 ... ??
>>> >
>>> > Minimum accepted by configure is 2010. 2013 is 2nd in
>>> priorities after
>>> > 2017. It has `VS_SUPPORTED_2013=false` though, but why not
>>> keep it
>>> > buildable?
>>>
>>> That depends on how painful it is to achieve that. As Kim has
>>> explained
>>> the suggested fix may allow building but it isn't correct.
>>>
>>> And we may not be able to keep this ability to build with VS2013
>>> going
>>> forward.
>>>
>>> Thanks,
>>> David
>>>
>>>
>>> >>
>>> >>>>
>>> >>>>
>>> http://cr.openjdk.java.net/~mvala/jdk/jdk/JDK-8213622/webrev.00/
>>> <
>> http://cr.openjdk.java.net/%7Emvala/jdk/jdk/JDK-8213622/webrev.00/>
>>> >>>
>>> >>> The failure is in a hotspot test. It should be using
>>> os::snprintf.
>>> >>
>>> >> Tests don't have access to os::snprintf. The test is just
>>> C++ code.
>>> >>
>>> >> Cheers,
>>> >> David
>>> >>
>>> >>
>>> >
>>>
>>>
>>>
>>> --
>>>
>>> Thanks,
>>> Jc
>>>
>>>
>>>
>>> --
>>>
>>> Thanks,
>>> Jc
>>
>
>
--
Michal Vala
OpenJDK QE
Red Hat Czech
More information about the build-dev
mailing list