Microsoft KB Archive/308690

= PRB: Visual Basic 6.0 Pipeline Components Stop Running =

Article ID: 308690

Article Last Modified on 10/22/2003

-

APPLIES TO


 * Microsoft Commerce Server 2002 Standard Edition
 * Microsoft Commerce Server 2000 Standard Edition

-



This article was previously published under Q308690



SYMPTOMS
If you call a pipeline component that is written in Microsoft Visual Basic 6.0, the pipeline component may not run. In addition, the component does not indicate a failure.

If you use pipeline logging, you may see the following log:

WORKING INSTANCE:

PIPELINE:++ component[0x9] about to be called ProgID: PipeLineRepro.Sample RootObject:      WriteValue        TestValueToSeeInTheLog           VT_EMPTY       __empty__        VT_I2    1 PIPELINE:-- component [0x9] returned hr: 0x0, IErrorLevel=1 in 0 milliseconds NON-WORKING INSTANCE:

PIPELINE:++ component[0x9] about to be called ProgID: PipeLineRepro.Sample PIPELINE:-- component [0x9] returned hr: 0x0, IErrorLevel=1 in 0 milliseconds



CAUSE
This problem occurs because the Visual Basic Pipeline Component Wizard does not properly set the Retain in Memory project property, and this project property is required.

When you do not select the Unattended Execution and the Retain in Memory check boxes, the Visual Basic runtime unexpectedly unloads custom and run-time dynamic-link libraries (DLLs). This causes the computer to stop responding (crash or hang) under some multithreaded scenarios. Some typical scenarios include:
 * Place the ActiveX DLL in Microsoft COM+ or Microsoft Transaction Server (MTS).
 * Call the ActiveX DLL from Microsoft Active Server Pages (ASP) pages.

NOTE: As in many multithreading issues, the symptoms may only manifest themselves under very specific, transient conditions.



RESOLUTION
To resolve this problem, select the Retain in Memory check box in the Visual Basic project properties, and then recompile the DLL.

