RFR: 8213622 - Windows VS2013 build failure - "'snprintf': identifier not found"

David Holmes david.holmes at oracle.com
Tue Nov 13 01:23:19 UTC 2018


Hi Jc,

On 13/11/2018 10:50 AM, JC Beyler wrote:
> Hi David,
> 
> Yes sorry, I had not seen that Mark Ludwig had only sent to me his 
> comment that included this part: "if you're going to bother with 
> strlen(), you know exactly how many bytes to copy, so don't use any 
> strXXX API at all - just memcpy()."
> 
> Does that make sense?

Sure - micro-optimization but that's fine.

Cheers,
David

> Thanks,
> Jc
> 
> On Mon, Nov 12, 2018 at 4:20 PM David Holmes <david.holmes at oracle.com 
> <mailto:david.holmes at oracle.com>> wrote:
> 
>     Hi Jc,
> 
>     On 13/11/2018 10:08 AM, JC Beyler wrote:
>      > Hi all,
>      >
>      > @Mark: good point, fixed in the new webrev
> 
>     I assume this was the strncpy -> memcpy change as I haven't see any
>     email from Mark. What was the issue?
> 
>     Update is fine anyway.
> 
>     Thanks,
>     David
>     -----
> 
> 
> 
>      > @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?
>      >
>      > Here is the new webrev:
>      > http://cr.openjdk.java.net/~jcbeyler/8213622/webrev.01/
>     <http://cr.openjdk.java.net/%7Ejcbeyler/8213622/webrev.01/>
>      > <http://cr.openjdk.java.net/%7Ejcbeyler/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 <mailto:david.holmes at oracle.com>
>      > <mailto:david.holmes at oracle.com
>     <mailto: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/>
>      >     <http://cr.openjdk.java.net/%7Ejcbeyler/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>
>      >     <mailto:jcbeyler at google.com <mailto:jcbeyler at google.com>>
>      >      > <mailto:jcbeyler at google.com <mailto:jcbeyler at google.com>
>     <mailto: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> <mailto:david.holmes at oracle.com
>     <mailto:david.holmes at oracle.com>>
>      >     <mailto:david.holmes at oracle.com
>     <mailto:david.holmes at oracle.com> <mailto: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>
>     <mailto:mvala at redhat.com <mailto:mvala at redhat.com>>
>      >      >         <mailto:mvala at redhat.com <mailto:mvala at redhat.com>
>     <mailto: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/>
>      >   
>       <http://cr.openjdk.java.net/%7Emvala/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
>      >
>      >
>      >
>      > --
>      >
>      > Thanks,
>      > Jc
> 
> 
> 
> -- 
> 
> Thanks,
> Jc


More information about the build-dev mailing list