Página 1 de 1
MultiThread no Harbour
Enviado: 02 Set 2013 16:29
por vilian
Amigos,
Implementei o uso de uma função do meu sistema usando Threads, e com Harbour vai tudo bem, enquanto o sistema está sendo executado. O problema é que ao finalizar o sistema, mesmo que a Thread já tenha completado seu ciclo de processamento, sempre ocorre um erro de execução do windows (APPCRASH).
Algum de vocês já passou por isso ?
MultiThread no Harbour
Enviado: 02 Set 2013 19:37
por yugi386
MultiThread no Harbour
Enviado: 02 Set 2013 21:30
por vilian
Yugi,
Já tinha visto esse post, e não vi nada nele diferente do que estou fazendo... A função executada na Thread está funcionando normalmente, aliás como todo o resto no sistema. O problema só aparece quando tento finalizar o sistema, aparece uma mensagem de que o sistema não está respondendo e logo em seguida um APPCRASH...
Já monitorei e posso afirmar que todas as Thread iniciadas tiveram seus processamentos concluídos.
MultiThread no Harbour
Enviado: 02 Set 2013 21:53
por yugi386
Prezado Vilian,
Sem ter um código para analisar não é possível te ajudar diretamente.
Verifique os códigos oficiais de exemplos de Threads (pode ser que tenha algo útil):
https://github.com/harbour/core/tree/master/tests/mt
Após o término das threads tente limpar o conteúdo dos ponteiros através das funções
__mvXRelease ou
__mvRelease Veja a documentação em:
http://www.elektrosoft.it/tutorials/Har ... -guide.htm
att,
Yugi
MultiThread no Harbour
Enviado: 02 Set 2013 22:29
por vilian
Obrigado Yuri,
Vc tem razão... Vou tentar reproduzir o problema num código-fonte menor e posto aqui.
MultiThread no Harbour
Enviado: 02 Set 2013 23:29
por alxsts
Olá!
Seja bem-vindo Vilian.
O Quintas fez algumas experiências que estão no tópico
multijanelas, multithread e talvez possam contribuir de alguma forma.
Verifique se você está usando a versão mais atualizada do Harbour. Pode estar usando alguma versão com bug...
MultiThread no Harbour
Enviado: 03 Set 2013 00:15
por Jairo Maia
Olá Pessoal,
Já vi este problema algumas vezes mas em máquinas que tem jogos instalados. Com Harbour não. Você poderia colocar a tela de eventos do erro? E também qual Windows você está usando? Quando dá o erro, você chegou a notar se o módulo de falhas é sempre o mesmo?
MultiThread no Harbour
Enviado: 03 Set 2013 08:47
por vilian
Utilizo Windows 7 64 bits.
A versão do Harbour é a 3.1 Rev 17222 que baixei do harbour-projet.org
MultiThread no Harbour
Enviado: 03 Set 2013 09:28
por Jairo Maia
Caro Vilian,
Esse problema não será solucionado se você não identificar o módulo da falha. Esse tipo de erro em 98% das vezes está relacionado a uma dll corrompida, na maioria das vezes por que ela foi corrompida num ataque de malware e defesa do antivirus. Normalmente se relacionado a dll basta substituir a dll. Em alguns casos isso só é possível no modo de segurança, outros com disco de boot, e a maioria das vezes de forma simples.
Isto não está relacionado ao Harbour, mas sim ao sistema operacional. Fica difícil tentar ajudar sem ver a tela de eventos do Windows para entender quem está provocando a falha.
MultiThread no Harbour
Enviado: 03 Set 2013 09:55
por vilian
Jairo,
Realmente acho que seja algo no meu ambiente mesmo, mas não consegui identificar o quê...Utilizei o código abaixo, que peguei no forum internacional e mesmo nele, a situação se repete, ou seja, consigo executar normalmente, mas ao finalizar o programa aparece a mensagem abaixo:
Código: Selecionar todos
#include "Fivewin.ch"
PROC Main()
LOCAL aObj := Array(1000000)
LOCAL oDlg, oButton
PUBLIC nDestroyed := 0
DEFINE DIALOG oDlg SIZE 400, 500
@ 11, 0 BUTTON oButton PROMPT "Start" SIZE 80, 8 ACTION Button1_Click(oDlg)
ACTIVATE DIALOG oDlg CENTER
RETURN
PROC Button1_Click(oDlg)
LOCAL n := 0
LOCAL pMutex := HB_MutexCreate()
FOR n :=1 TO 10
StartThread( "MyFuncForThreads", pMutex, oDlg, n )
NEXT
WaitForThreads()
RETURN
PROC MyFuncForThreads(pMutex,oDlg,n)
LOCAL cTID
HB_MutexLock(pMutex)
oDlg:Say(n,0,"Thread ID" + lTrim(Str(GetThreadID())) + " system id: " + lTrim(Str(GetSystemThreadID())))
HB_MutexUnlock(pMutex)
RETURN
Que versão do Harbour vc esta usando ?
Na linkedição mudei apenas as libs hbvmmt.lib e cw32mt.lib, vc mudou mais alguma ?
Existe alguma configuração adicional pra fazer ?
Quando vc fecha o aplicativo tem que executar alguma função ?
---
Sds,
Vilian Arraes
Belém - Pa
MultiThread no Harbour
Enviado: 03 Set 2013 10:29
por Jairo Maia
Vilian, o mais importante na janela de eventos deu pra ver, neste caso, o código de exceção. Este código significa que seu Seven está achando que seu aplicativo é malicioso. Isso é muito chato.
vilian escreveu:Existe alguma configuração adicional pra fazer ?
Sim. Neste caso no sistema de proteção do windows. Porém, antes de sugerir exceção no módulo de proteção, tente compilar com o Harbour 3.0.0 ou 3.2.0. Caso não resolva passo como alterar o módulo de proteção para seu aplicativo, mas é desaconselhável, ou seja, o erro cessa, mas não é uma solução. Você poderá voltar a ter esse problema trocando o nome do aplicativo por exemplo.
Para baixar outra versão use:
Harbour 3.0.0 ou
Harbour 3.2.0
Veja o que acontece.
MultiThread no Harbour
Enviado: 03 Set 2013 10:51
por vilian
Com as 2 versões do Harbour que você citou, continua o problema.
MultiThread no Harbour
Enviado: 03 Set 2013 11:32
por Jairo Maia
Pois é... Bom, descartado bug em dll, vamos fazer uma última tentativa antes de passar os procedimentos de alteração do módulo de segurança: baixe o ADWCLEANER.EXE (baixaki, superdownloads, etc) e execute em seu computador. Faça isso, porque existe a possibilidade sim deste problema ser causado por alguma praga.
Se ainda assim persistir, então na minha opinião somente mesmo neutralizando a ação do módulo de segurança para seu aplicativo.
MultiThread no Harbour
Enviado: 03 Set 2013 11:51
por vilian
Jairo,
Obrigado pela sua atenção. Tenho muito cuidado com relação a essas "pragas" e além do antivirus, faço manutenções periódicas no meu micro com o CCleaner, acho que essa podemos descartar.
Mexer no módulo de segurança do windows é algo que não pretendo fazer, simplemente por que é inviável pra mim fazer isso nos clientes, e em alguns realmente não vou poder mexer nisso.
Espalhei questionamentos acerca disso em vários forums pra ver se identifico o que está provocando o problema, enquanto não encontro solução, vou deixar Multithreads de lado.
---
Sds,
Vilian Arraes
Belém - Pa
MultiThread no Harbour
Enviado: 03 Set 2013 12:07
por Jairo Maia
Muito bom! Não esqueça de reportar aqui também ao encontrar uma solução. Valeu.