jhow Posted August 1, 2023 at 07:07 PM Share Posted August 1, 2023 at 07:07 PM Ola tudo bem , eu trabalho com uma maquina,ela usa um sistema bem antigo DOS, eu fui ligar Imagem aqui e da esse erro ,ja tentei inumeras coisas e nda , eu tb nao tenho o backup ,como e antigo nem consigo o sistema ou programa com o fabricante. Quote Link to comment Share on other sites More sharing options...
Administrators Fernando Mercês Posted August 1, 2023 at 09:56 PM Administrators Share Posted August 1, 2023 at 09:56 PM Olá! O programa que você executou tentou acessar um endereço de memória inválido e por isso o SO matou o processo. No caso, ele dá um dump dos opcodes das instruções me 0x42C24B e diz que o errou ocorreu na instrução em 0x42C253. Então dá pra inferir o seguinte: # rasm2 -ax86 -d e84cabffff8b450c8b008903 call 0xffffab51 mov eax, dword [ebp + 0xc] mov eax, dword [eax] mov dword [ebx], eax Colocando os endereços, ficaria: 42C24B call 0xffffab51 42C250 mov eax, dword [ebp + 0xc] 42C253 mov eax, dword [eax] 42C255 mov dword [ebx], eax Então o erro seria na instrução mov eax, dword [eax]. Como no momento que essa instrução roda EAX é 0 (tem um dump dos valores dos registradores na imagem), o programa tenta acessar o endereço de memória 0, o que bate com o erro final (The instruction referenced illegal address 00000000). A instrução anterior copia um valor para EAX a partir de EBP + C, que parece ser o segundo argumento da função dona dessa instrução. Não dá pra saber se é a main() do programa, mas você pode tentar passar um argumento pra ver se o erro muda: C:\PROGS\SR632\V3.10\OBJ>NEW.EXE 1 2 Se precisar de mais ajuda, acho que vai ter que copiar a pasta PROGS, compactá-la e enviar aqui pra gente. Assim alguém pode dar uma olhada num disassembler e tentar te ajudar com o erro. Abraço! Quote Link to comment Share on other sites More sharing options...
jhow Posted August 2, 2023 at 01:37 PM Author Share Posted August 2, 2023 at 01:37 PM Eu tentei o comando que me falou e apareceu o erro da foto Vou ver se consigo um disquete pra copiar a pasta , pq a cpu e muito antigo so tem entrada pra disquete,nao possui usb , e so tem o sistema Ms-Dos , a maquina e uma rebobinadeira. O que sera que pode ter causado esse erro? E obrigado pelas confirmações. Quote Link to comment Share on other sites More sharing options...
Administrators Fernando Mercês Posted August 3, 2023 at 01:18 PM Administrators Share Posted August 3, 2023 at 01:18 PM Em 02/08/2023 em 10:37, jhow disse: Vou ver se consigo um disquete pra copiar a pasta , pq a cpu e muito antigo so tem entrada pra disquete,nao possui usb , e so tem o sistema Ms-Dos , a maquina e uma rebobinadeira. Boa! Em 02/08/2023 em 10:37, jhow disse: O que sera que pode ter causado esse erro? Ainda não sei. Enquanto você não acha os disquetes, consegue tirar uma foto do conteúdo do AUTOEXEC.BAT e CONFIG.SYS? Os comandos são: cd \ type autoexec.bat type config.sys Seria legal também ter a versão do DOS e uma listagem desse diretório OBJ aí: ver dir c:\progs\sr632\v3.10\obj Valeu! Quote Link to comment Share on other sites More sharing options...
jhow Posted August 3, 2023 at 06:21 PM Author Share Posted August 3, 2023 at 06:21 PM Eu tiro a uma placa e ele incia ate uma certa parte , mais ai volta o erro. Enviei a foto da placa. Quote Link to comment Share on other sites More sharing options...
Administrators Fernando Mercês Posted August 3, 2023 at 08:38 PM Administrators Share Posted August 3, 2023 at 08:38 PM Opa, deixa eu te pedir mais umas coisas: Uma foto do conteúdo do AUTOEXEC.BAT que mostre tudo (tá cortando um pedaço na que você mandou). Uma foto do conteúdo do INIT.BAT. É só comandar type c:\progs\sr632\v3.10\obj\init.bat Uma foto da saída do comando dir c:\ Uma cópia da pasta inteira (eu sei que você tá buscando os disquetes já, mas só pra não esquecer). Abraço! Quote Link to comment Share on other sites More sharing options...
jhow Posted August 4, 2023 at 12:39 AM Author Share Posted August 4, 2023 at 12:39 AM consegui copiar ,salvei a pasta toda e zipei (Enviado privado) 1 Quote Link to comment Share on other sites More sharing options...
Administrators Fernando Mercês Posted August 4, 2023 at 03:07 AM Administrators Share Posted August 4, 2023 at 03:07 AM Eu dei uma olhada aqui e tudo parece bastante interessante. Não tenho o dispositivo com o qual este programa conversa, mas num emulador aqui ele pelo menos subiu: Aí chega a aparecer esta tela? Eu tô achando que o problema é o seguinte: a memória RAM está se esgotando e o programa não consegue nem memória para alocar uma string de erro "Out of memory" nessa função: void sub_42AEC0() { char var_4[4]; // [esp+20h] [ebp-4h] BYREF __InitExceptBlock(); string::string((string *)var_4, aOutOfMemory); xalloc::xalloc((xalloc *)&__xalloc, (const string *)var_4, 0); string::~string((TStringRef **)var_4, 2); } No caso acima, var_4 é null se o operador new falhar. Veja v5 abaixo: string *__cdecl string::string(string *this, char *s) { size_t v2; // eax TStringRef *v3; // eax TStringRef *v5; // [esp+28h] [ebp-4h] __InitExceptBlock(); v5 = (TStringRef *)operator new(0x12u); if ( v5 ) { if ( s ) v2 = strlen(s); else v2 = 0; TStringRef::TStringRef(v5, s, v2, 0, 0, 0); --*(_DWORD *)_DestructorCountPtr; v3 = v5; } else { v3 = 0; } *(_DWORD *)this = v3; ++*(_DWORD *)_DestructorCountPtr; return this; } Com var_4 sendo NULL, o fluxo entra em xalloc(NULL, 0) e dentro dela tem mais duas chamadas, onde uma chega no mov eax, [eax] problemático em 0x0042C253. Combinando então o seguinte: Você não alterou nada no sistema. O sistema rodou no meu emulador. Minha suspeita de ser um erro de alocação de memória. Meu palpite é que um pente de memória deste computador tenha queimado ou esteja com algum mau contato e ele está com metade da memória que ele deveria ter. Não sei. Você pode tentar ver quanto de memória tem livre com o comando mem /c e dizer aqui pra gente (postar uma foto da saída). Ou tentar desligar, limpar os pentes de memória e ligar novamente o PC. Só ideias por enquanto... Quote Link to comment Share on other sites More sharing options...
jhow Posted August 4, 2023 at 10:43 AM Author Share Posted August 4, 2023 at 10:43 AM (edited) Nao chegou nessa parte nao , ela da erro aonde eu mostrei... Sao 2 ram de 4MB, eu fiz o comando mem /c e deu invalid keyword. ... Tentei rodar no celular e deu erro da FOTO Edited August 4, 2023 at 11:24 AM by jhow Quote Link to comment Share on other sites More sharing options...
Administrators Fernando Mercês Posted August 4, 2023 at 03:47 PM Administrators Share Posted August 4, 2023 at 03:47 PM Em 04/08/2023 em 07:43, jhow disse: Nao chegou nessa parte nao , ela da erro aonde eu mostrei... Então é mais um indício de que o software está ok e o problema é com a máquina mesmo. É cedo para afirmar, mas é um indício. 🙂 Em 04/08/2023 em 07:43, jhow disse: Sao 2 ram de 4MB, eu fiz o comando mem /c e deu invalid keyword. Já experimentou remover os dois pentes de memória e limpar seus contatos com borracha? Ao ligar o PC, é legal ver no POST (aqueles testes que rolam quando o computador liga) se a memória está sendo reconhecida em sua totalidade (8MB no seu caso). Em 04/08/2023 em 07:43, jhow disse: Tentei rodar no celular e deu erro da FOTO É um emulador de MS-DOS pra celular? Abraço! Quote Link to comment Share on other sites More sharing options...
jhow Posted August 4, 2023 at 04:22 PM Author Share Posted August 4, 2023 at 04:22 PM Um tecnico veio aqui e falou que deve ser alguma coisa na placa mesmo. Limpei as ram e coloquei troquei os slots e nda. Sim eu baixei e um emulador de Dos que baixei no android. Obrigado amigo pela ajuda. Quote Link to comment Share on other sites More sharing options...
Jorge Merces de Barros Posted August 4, 2023 at 10:49 PM Share Posted August 4, 2023 at 10:49 PM Olá, Pegando à partir daqui, eu ainda tenho algumas perguntas sobre o cenário do problema. 1) Você pode compartilhar uma foto do computador em questão, no caso seria interessante uma ou mais fotos fotos, que exiba a Placa-Mãe com alguns detalhes do fabricante, modelo, CPU, Ram e o HD. (que tipo é? HD ou DOM? Barramento do HD é RLL, IDE ou SATA? 2) A placa que você exibiu no inicio eu pensei que fosse uma placa única de PC Industrial, mas olhando com mais atenção eu não identifiquei isso como placa-mãe de PC de Industrial, tudo leva a crer que essa placa é algum tipo de placa de controle de I/O de máquina, se vc conseguir fazer mais fotos com melhor qualidade talvez seja possível localizar material adicional para ajudar em seu problema. Você confirma que essa placa da foto é uma placa que estava instalada dentro de um PC, uma placa de I/O (entrada e saída) ??? O slot dela dentro do PC é ISA 8 Bits??? Ou PCI? 3) Esse problema aconteceu de repente, ou seja, a máquina estava funcionando normal e foi desligada e ao religar o defeito surgiu? Houve algum sinistro de queda de força, tempestade com raios, ou alguma barbeiragem na produção onde alguém inadvertidamente fez algo errado ou um incidente? 4) Na fonte do citado PC a chave que liga ele é do tipo seca (HH) como se fosse um interruptor de lâmpada, fonte do tipo AT? Ou a fonte é mais moderna, quando se liga, o botão é como o dos PCs modernos, tipo campainha? (push button) nesse caso a fonte é ATX. Você consegue medir nos cabos da fonte se o +5v e +12v estão próximos dos valores de tensão nominal? 5) Você sabe dizer, qual a finalidade da bateria da placa? (foto) É para não perder os ajustes da tarefa caso caia a força, ou mantem parâmetros de sistema como data e hora? O questionamento é se desconectar essa bateria, a placa perde o que? Ela zera algum ajuste de Zero+Set-Point? 😄 Eu sei que são muitos questionamento, mas esses questionamentos, vai ajudar a guiar sugestões para tentar te ajudar solucionar o problema. Qualquer informação adicional vai ajudar. Minha opinião antecipada. Se tratando de equipamentos de chão de fábrica, em geral, quanto mais antigo, mais robusto ele é! Pelo que você relatou, eu imagino que problema pode estar mesmo centrado nessa placa de I/O, o Fernando fez toda analise estática e dinâmica 🤙 do programa em ambiente emulado, "sem o hardware real", e tudo leva a crer que o defeito se apresenta quando o programa detecta essa placa... A tela exibe um erro numerado, nesse caso, Erro code 0000004. No passado, muitos programas que rodam em DOS, incluíam nos programas .exe gerados (link-editados) dentro dos .obj gerados depois de compilados (Clipper por exemplo) então se existir um manual do programa em questão, talvez exista uma tabela de erros correspondentes a possíveis causas.... Como ainda não tenho detalhes em qual mídia física esse programa roda durante a produção, se é em um HD ou direto de um disquete (disco flexível) Existe ainda a possibilidade, de existir algum defeito físico nesse disco?!? Nesse caso, o DOS 6.22 tem um utilitário de disco que é indicado para localizar e consertar erros em discos, erros lógicos & físicos nesses discos, seja ele um disquete ou um HD. O utilitário é o Scandisk.exe, você vai encontra-lo na pasta do DOS. Aguardando suas infos complementares. 👍 Jorge Mercês de Barros 🖖 Quote Link to comment Share on other sites More sharing options...
jhow Posted August 7, 2023 at 10:22 PM Author Share Posted August 7, 2023 at 10:22 PM (edited) Obrigado turma! Edited August 9, 2023 at 10:00 PM by jhow Quote Link to comment Share on other sites More sharing options...
Jorge Merces de Barros Posted August 10, 2023 at 02:49 PM Share Posted August 10, 2023 at 02:49 PM Em 07/08/2023 em 19:22, jhow disse: Obrigado turma! Conseguiu solucionar o problema? 🙄 Caso sim, conte-nos o final da história? Jorge Mercês de Barros Quote Link to comment Share on other sites More sharing options...
jhow Posted August 12, 2023 at 09:33 PM Author Share Posted August 12, 2023 at 09:33 PM Opa pelo jeito e a placa de comunicação mesmo,esta chegando outra pra testar qlquer coisa aviso aqui. 1 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.