[OT] Stacktrace em C

Ae pessoal,

Tenho uma aplicação em C que tá dando pau no Windows 2003 … usei o Depends pra fazer o profile do danado e ele me retornou um punhado de chamado que eu nao sei o que fazer :open_mouth:

[quote]00:00:08.360: GetProcAddress(0x770C0000 [c:winntsystem32OLEAUT32.DLL], “VarBstrCmp”) called from “c:winntsystem32EXPSRV.DLL” at address 0x0F9C86BB and returned 0x7712A6B9 by thread 7.
00:00:08.360: GetProcAddress(0x77140000 [c:winntsystem32OLE32.DLL], “CoCreateInstanceEx”) called from “c:winntsystem32EXPSRV.DLL” at address 0x0F9C8045 and returned 0x77144E83 by thread 7.
00:00:08.406: GetProcAddress(0x77140000 [c:winntsystem32OLE32.DLL], “CLSIDFromProgIDEx”) called from “c:winntsystem32EXPSRV.DLL” at address 0x0F9C8052 and returned 0x7716BB02 by thread 7.
00:00:08.453: LoadLibraryA(“kernel32.dll”) called from “c:winntsystem32OLEAUT32.DLL” at address 0x770E99D2 by thread 7.
00:00:08.469: LoadLibraryA(“kernel32.dll”) returned 0x77E40000 by thread 7.
00:00:08.485: GetProcAddress(0x77E40000 [c:winntsystem32KERNEL32.DLL], “NlsGetCacheUpdateCount”) called from “c:winntsystem32OLEAUT32.DLL” at address 0x770E99EC and returned 0x77E644BC by thread 7.
00:01:31.422: GetProcAddress(0x77E40000 [c:winntsystem32KERNEL32.DLL], “GetCalendarInfoW”) called from “c:winntsystem32OLEAUT32.DLL” at address 0x770DEBC2 and returned 0x77E6E9D6 by thread 8.
01:58:45.516: Second chance exception 0xC0000005 (Access Violation) occurred in “c:myprojectmydll.DLL” at address 0x10003765 by thread 8.
01:58:45.547: Thread 8 exited with code 128 (0x80).
01:58:45.547: Thread 3 exited with code 128 (0x80).
01:58:45.547: Thread 4 exited with code 128 (0x80).
01:58:45.547: Thread 5 exited with code 128 (0x80).
01:58:45.547: Thread 1 exited with code 128 (0x80).
01:58:45.547: Thread 2 exited with code 128 (0x80).
01:58:45.547: Thread 6 exited with code 128 (0x80).
01:58:45.547: Exited “c:myprojectmyExe.EXE” (process 0x2E0) with code 128 (0x80) by thread 7.
[/quote]

Alguma ideia como eu posso rastrear com isso onde foi a chamada que causou o problema?

Windows 2000 roda sem problema algum …

Nada que um pouco de dinheiro não resolva…

Arranje um trial do IBM Rational PurifyPlus (esse mais para vazamentos de memória) ou do Compuware NuMega, instale, pegue sua aplicação, rode e veja o que ocorre.

Não programe em C++ sem ter esses aplicativos para ajudar a debugar. Não são baratos, mas valem cada centavo que se paga.

Por exemplo, você consegue pegar um vazamento de memória federal (no sentido pornográfico da coisa) que demora dias para conseguir derrubar a máquina. Digo federal porque é literalmente impossível conseguir determinar a causa sem ter uma ferramenta dessas.

  • P.S. Que Windows 2003 que você está usando aí? No Windows 2003 (pelo menos na versão Server Standard) o diretório de sistema é C:\WINDOWS\SYSTEM32, não C:\WINNT\SYSTEM32, a menos que você tenha feito o upgrade a partir de uma máquina 2000 (feio, muito feio - porque não instalou do zero? Você conhece a Microsoft…)

Você está chamando isso direto do seu código, ou tem algum “wrapper” (como CComBSTR)?

ehehehe juro que não fui eu. :cry:

Pior que acho que foi upgrade mesmo … diacho …

Eu não gerencio a máquina, só to tentando descobrir porque o programa cai.

Valeu pela mensagem, ela vai pra gerente ver no que tá me metendo (sem gastar um tostao com as ferramentas).

chamando isso o que? O c:myprojectmydll.dll? se for tá direto no codigo …

Aparece isto no seu crash dump: \winnt\system32\EXPSRV.DLL

Dei uma olhada e isso parece ser de algo que usa VBA, não exatamente C++ (para uma aplicação C++ usar tal coisa o programador tem de se esforçar muito…)

Talvez você precise de pedir pro cara que escreveu e compilou a DLL aplicar um service pack no compilador (Visual Studio?) e mandar uma versão corrigida. :roll:

Moleza! A chamada foi do boteco lá da esquina onde o Seu Manoel tá tentando te avisar que hoje é sexta-feira, larga essa porcaria pra lá, enche o pote de cerveja que na segunda a solução vai surgir aleivosissimamente como uma dia limpo de sol!!!