MultiThread no Harbour

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

vilian
Usuário Nível 1
Usuário Nível 1
Mensagens: 27
Registrado em: 29 Ago 2013 17:39
Localização: Belem/Pa

MultiThread no Harbour

Mensagem 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 ?
yugi386
Usuário Nível 2
Usuário Nível 2
Mensagens: 82
Registrado em: 24 Jul 2008 10:36
Localização: Minas Gerais

MultiThread no Harbour

Mensagem por yugi386 »

Saudações,

Dê uma olhada neste tópico: https://pctoledo.org/forum/viewto ... 45&t=14420
vilian
Usuário Nível 1
Usuário Nível 1
Mensagens: 27
Registrado em: 29 Ago 2013 17:39
Localização: Belem/Pa

MultiThread no Harbour

Mensagem 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.
yugi386
Usuário Nível 2
Usuário Nível 2
Mensagens: 82
Registrado em: 24 Jul 2008 10:36
Localização: Minas Gerais

MultiThread no Harbour

Mensagem 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
vilian
Usuário Nível 1
Usuário Nível 1
Mensagens: 27
Registrado em: 29 Ago 2013 17:39
Localização: Belem/Pa

MultiThread no Harbour

Mensagem por vilian »

Obrigado Yuri,

Vc tem razão... Vou tentar reproduzir o problema num código-fonte menor e posto aqui.
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

MultiThread no Harbour

Mensagem 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...
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

MultiThread no Harbour

Mensagem 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?
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
vilian
Usuário Nível 1
Usuário Nível 1
Mensagens: 27
Registrado em: 29 Ago 2013 17:39
Localização: Belem/Pa

MultiThread no Harbour

Mensagem por vilian »

Utilizo Windows 7 64 bits.
A versão do Harbour é a 3.1 Rev 17222 que baixei do harbour-projet.org
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

MultiThread no Harbour

Mensagem 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.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
vilian
Usuário Nível 1
Usuário Nível 1
Mensagens: 27
Registrado em: 29 Ago 2013 17:39
Localização: Belem/Pa

MultiThread no Harbour

Mensagem 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:

Imagem

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
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

MultiThread no Harbour

Mensagem 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.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
vilian
Usuário Nível 1
Usuário Nível 1
Mensagens: 27
Registrado em: 29 Ago 2013 17:39
Localização: Belem/Pa

MultiThread no Harbour

Mensagem por vilian »

Com as 2 versões do Harbour que você citou, continua o problema.
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

MultiThread no Harbour

Mensagem 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.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
vilian
Usuário Nível 1
Usuário Nível 1
Mensagens: 27
Registrado em: 29 Ago 2013 17:39
Localização: Belem/Pa

MultiThread no Harbour

Mensagem 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
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

MultiThread no Harbour

Mensagem por Jairo Maia »

Muito bom! Não esqueça de reportar aqui também ao encontrar uma solução. Valeu.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Responder