cygpath hangings

Brian Ford ford@vss.fsi.com
Tue Oct 14 21:14:00 GMT 2003


Igor,

On Tue, 14 Oct 2003, Igor Pechtchanski wrote:

> On Tue, 14 Oct 2003, chris wrote:
>
> > -- Code begins --
> >
> > #include <shlobj.h>
> >
> > void fee (void) {
> >   char *buf;
> >   LPITEMIDLIST id;
> >   SHGetPathFromIDList (id, buf);
> > }
> >
> > int main (int argc, char **argv)
> > {
> >     return 0;
> > }
>
> Chris,
>
> I suspect that this hang might be happening while loading the DLL.  Could
> you try to link your program with something like below and see if it still
> hangs, and what it outputs?
>
Yes, it still hangs when run under setup from explorer.  No output from
the hung one, or when run stand alone in bash.

> If it doesn't hang, try renaming
> SHGetPathFromIDList below to something else (e.g., foo) that calls the
> real SHGetPathFromIDList, call foo() from your fee() above, and link your
> program against both test_dll.dll and SHLWAPI.DLL.
>
Well, I didn't link explicitly with SHLWAPI.DLL, but same here.

There will be no ouput unless main calls foo, right?  Then, I still get a
hang under setup from explorer; no output.  Stand alone in a shell, output
is:

DLL loaded: process attach
DLL loaded: thread attach
Segmentation fault (core dumped)

The SEGV is expected given the code is invalid anyway.

Nothing to see here... move along...

>
> -------------------------- BEGIN test_dll.c --------------------------
> #include <windows.h>
> #include <stdio.h>
> #include <shlobj.h>
>
> static FILE *output = NULL;
>
> void SHGetPathFromIDList(LPITEMIDLIST id, char *buf) {
>   return;
> }
>
> BOOL WINAPI DllMain(HINSTANCE h, DWORD f, LPVOID r) {
>   if (!output) output = stderr;
>   fprintf (output, "DLL loaded: ");
>   switch (f) {
>     case DLL_PROCESS_ATTACH: fprintf (output, "process attach");
>                              break;
>     case DLL_THREAD_ATTACH:  fprintf (output, "thread attach");
>                              break;
>     case DLL_THREAD_DETACH:  fprintf (output, "thread detach");
>                              break;
>     case DLL_PROCESS_DETACH: fprintf (output, "process detach");
>                              break;
>     default:                 fprintf (output, "WTF?!");
>   }
>   fprintf (output, "\n");
>   fflush (output);
>   return TRUE;
> }
> ---------- Note: cutting here may damage your screen surface ---------

-- 
Brian Ford
Senior Realtime Software Engineer
VITAL - Visual Simulation Systems
FlightSafety International
Phone: 314-551-8460
Fax:   314-551-8444

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/



More information about the Cygwin mailing list