Re: Linker errors

Tech-Archive recommends: Repair Windows Errors & Optimize Windows Performance

From: Jonathan Payne (jpayne_at_NOSPAM.serif.com)
Date: 03/23/04


Date: Tue, 23 Mar 2004 10:39:24 -0000

Thank you for taking the time to reply to my post.

I was wondering if you could give any more details on what limits we might
be hitting that could cause this error. As you say, it seems to happen when
linking very large images and the linker seems to be very reliable when
working on smaller projects. Is it the total size of the imported
libraries, the size of the object files in the current module, the number of
imported symbols or a combination of these? I would like to get a clear
idea of what is causing this problem so I can try and stop it occurring.

Currently the solution I am working on consist of 14 projects that are all
built to DLLs and each one contains an average of around 100 classes
exported using __declspec(dllexport). These are then used in the main
application module. We use this layout so we can share code between our
applications and to try and keep build times down. Currently the DLL
binaries are never shared between projects - each project will use its own
set of the library DLLs built at the time the project is released.

Are there any changes you could suggest that would help reduce the chances
of this error?

At the moment all of the projects have incremental linking turned on for
debug builds. I would like to continue using incremental linking with the
main application module as it saves a lot of time but I could disable it for
the libraries if that might help. Would turning off edit and continue help?

Would moving code out of the application into more DLLs help or would it be
more reliable if I were to reduce the number of imported libraries or use
static linking for some of them? Would reducing the number of symbols
exported from the DLLs be useful?

I have just found your post regarding ILK file size limits:

http://tinyurl.com/2nqfs

Although this is not the error message we are seeing, is it possible that
the /3GB switch and/or more memory might help?

I would be happy to test any new versions of the linker you may have to see
if the problem has been fixed and I can try and extract more debug
information if that would help.

Jonathan

"Ronald Laeremans [MSFT]" <ronaldl@online.microsoft.com> wrote in message
news:ud1NH2GEEHA.3804@TK2MSFTNGP09.phx.gbl...
> Hi Jonathan,
>
> The lead for the linker team looked at the dump info you provided and we
> think it may be related to an issue we fixed for the release we are
> currently working on that addresses an issue when new imports get added
and
> that mainly hits when we are linking very large images like in your case.
We
> are within a few months of releasing the first public drop of that version
> (not a Beta, but a less tested version called a community drop). If you
> could try your scenario with that compiler, we could determine whether
that
> indeed addresses your issue and if it doesn't we could work with you to
see
> what is up in more detail.
>
> Apart from not ever adding any imports between incremental links or
> splitting up your images into smaller ones, I couldn't find a real
> workaround if it is indeed this issue you are hitting.
>
> Ronald Laeremans
> Visual C++ team
>
> "Jonathan Payne" <jpayne@NOSPAM.dsl.pipex.com> wrote in message
> news:%23PpZl8ZDEHA.2908@TK2MSFTNGP09.phx.gbl...
> > Sorry to post this again. I didn't get any responses the previous time
I
> > posted and I really would appreciate an answer.
> >
> >
> >
> > Even if someone could just acknowledge that this is a bug and/or give me
a
> > few clues as to what factors I could change to reduce this problem.
> >
> >
> >
> > I am getting these linker errors even more frequently now (today they
> > started occurring after about three builds after a complete rebuild).
> >
> >
> >
> > It should be quite easy for someone to search for LNK1000 in a bugs
> database
> > or to have a look at the debug files for the linker to see what code is
at
> > eip in the register dumps.
> >
> >
> >
> > I am happy to try and extract any other debug information that you might
> > need.
> >
> >
> >
> > Original post ->
> >
> >
> >
> > I am having some problems with the linker and I was wondering if anyone
> had
> > any suggestions. I am working on a large project (the main .exe file is
> > around 7 mb release, 14 mb debug) and after building a number of debug
> > builds I get a linker error (see below).
> >
> > I do a complete clean and rebuild every evening so I have a fresh build
by
> > the morning. By early afternoon (after perhaps 20 or so incremental
> > builds), I start seeing the linker errors and once they start occurring,
I
> > get them roughtly every other time I build until I do a full rebuild.
> >
> > The following knowledge base articles seem to detail similar problems
but
> > for the 2002 edition of the compiler (I am using Visual Studio 2003):
> >
> > http://support.microsoft.com/default.aspx?kbid=329593
> > http://support.microsoft.com/default.aspx?scid=kb;en-us;826326
> >
> > As these have updated link.exe files from after the 2003 release, I was
> > wondering if the fix was discovered after the 2003 release and if so, if
> > Microsoft has an equivalent fix for Visual Studio 2003. Is there a hot
> fix
> > I could get from Microsoft support?
> >
> > Alternatively, are there any work arounds? I was wondering if deleting
> some
> > of the intermediate files and letting it do a full relink at lunch time
> each
> > day would help but I think it is already doing a full relink after the
> > linker crashes as the previous link failed (although I am thinking of
> > experimenting with deleting the .ilk files at lunch time).
> >
> > Of course the other solution would be not to use incremental linking but
I
> > would like to carry on using it if possible (as a full link takes much
> > longer).
> >
> > Jonathan
> >
> > Here are the error messages. I have collected a few but as they are all
> > almost identical I will only post a selection:
> >
> > 14:46 09/03/2004
> > LINK : fatal error LNK1000: Internal error during Pass2
> >
> > Version 7.10.3077
> >
> > ExceptionCode = C0000005
> > ExceptionFlags = 00000000
> > ExceptionAddress = 0044A956 (00400000) "C:\Program
> Files\Microsoft
> > Visual Studio .NET 2003\Vc7\bin\link.exe"
> > NumberParameters = 00000002
> > ExceptionInformation[ 0] = 00000000
> > ExceptionInformation[ 1] = 010240E7
> > CONTEXT:
> > Eax = 000002FF Esp = 0012F2C8
> > Ebx = 3FFF0338 Ebp = 00000001
> > Ecx = 01023DE8 Esi = 00E25368
> > Edx = 0000028F Edi = 0000028F
> > Eip = 0044A956 EFlags = 00010206
> > SegCs = 0000001B SegDs = 00000023
> > SegSs = 00000023 SegEs = 00000023
> > SegFs = 00000038 SegGs = 00000000
> > Dr0 = 0012F2C8 Dr3 = 3FFF0338
> > Dr1 = 00000001 Dr6 = 01023DE8
> > Dr2 = 00000000 Dr7 = 00000000
> >
> > 14:54 09/03/2004
> > LINK : fatal error LNK1000: Internal error during Pass2
> >
> > Version 7.10.3077
> >
> > ExceptionCode = C0000005
> > ExceptionFlags = 00000000
> > ExceptionAddress = 0044A956 (00400000) "C:\Program
> Files\Microsoft
> > Visual Studio .NET 2003\Vc7\bin\link.exe"
> > NumberParameters = 00000002
> > ExceptionInformation[ 0] = 00000000
> > ExceptionInformation[ 1] = 010240E7
> > CONTEXT:
> > Eax = 000002FF Esp = 0012F2C8
> > Ebx = 3FFF0338 Ebp = 00000001
> > Ecx = 01023DE8 Esi = 00E25368
> > Edx = 0000028F Edi = 0000028F
> > Eip = 0044A956 EFlags = 00010206
> > SegCs = 0000001B SegDs = 00000023
> > SegSs = 00000023 SegEs = 00000023
> > SegFs = 00000038 SegGs = 00000000
> > Dr0 = 0012F2C8 Dr3 = 3FFF0338
> > Dr1 = 00000001 Dr6 = 01023DE8
> > Dr2 = 00000000 Dr7 = 00000000
> >
> > 14:27 11/03/2004
> > LINK : fatal error LNK1000: Internal error during Pass2
> >
> > Version 7.10.3077
> >
> > ExceptionCode = C0000005
> > ExceptionFlags = 00000000
> > ExceptionAddress = 0044A956 (00400000) "C:\Program
> Files\Microsoft
> > Visual Studio .NET 2003\Vc7\bin\link.exe"
> > NumberParameters = 00000002
> > ExceptionInformation[ 0] = 00000000
> > ExceptionInformation[ 1] = 00D970D7
> > CONTEXT:
> > Eax = 000002FF Esp = 0012F2C8
> > Ebx = 3FFF0338 Ebp = 00000008
> > Ecx = 00D96DD8 Esi = 00A0B080
> > Edx = 0000028F Edi = 0000028F
> > Eip = 0044A956 EFlags = 00010206
> > SegCs = 0000001B SegDs = 00000023
> > SegSs = 00000023 SegEs = 00000023
> > SegFs = 00000038 SegGs = 00000000
> > Dr0 = 0012F2C8 Dr3 = 3FFF0338
> > Dr1 = 00000008 Dr6 = 00D96DD8
> > Dr2 = 00000000 Dr7 = 00000000
> >
> >
>
>



Relevant Pages

  • Re: rtld + static linking
    ... > shared libraries do. ... for the current implementation of the linker. ... and made no changes to the constructor argument ... the same source file is use for both dynamic and static linking. ...
    (freebsd-current)
  • Re: Relative vs. Absolute urls (I think?)
    ... That means you are linking to images or files without either: ... having a web open for editing. ... it will happen again and it is very time consuming to say the least. ...
    (microsoft.public.frontpage.programming)
  • Re: required attribute "ALT" not specified .
    ... They need different alt texts of course, since they contain contain different texts in image format or otherwise different symbols. ... since it was not handled when the images were created. ... But the real culprit is the use of images for linking. ...
    (alt.html)
  • Re: More projects in a C++ solution: how to link them together?
    ... > extern int x; ... > When in the second project I try to use this global variable, I get a linker ... > How do I tell the linker to also use the object files from the first ... linking that project to the other project's library list. ...
    (microsoft.public.vc.language)
  • Re: More projects in a C++ solution: how to link them together?
    ... > extern int x; ... > When in the second project I try to use this global variable, I get a linker ... > How do I tell the linker to also use the object files from the first ... linking that project to the other project's library list. ...
    (microsoft.public.vsnet.ide)