PDA

View Full Version : [cobol] LOAD FAILURE (157) ON FILE XXXXXXXX.EXE con chip nvidia


coguaro
01-06-2013, 13:10
come da titolo ho un problema con un gestionale non creato da me ( che da quello che ho capito è stato fatto in cobol ) e di cui l'assistenza è lenta ad assistere e specialmente a risolvere problemi ( e purtroppo per ora non è possibile sostituire tale gestionale con altro software ) che sui pc nei quali c'è un chip nvidia sia esso video e/o chipset riporta l'errore LOAD FAILURE (157) ON FILE XXXXXXX.EXE sono riuscito a risalire al collegamento al chip nvidia in quanto su 4 pc su cui gira questo programma su uno non fa nessun difetto mentre sugli altri 3 esce fuori il difetto facendo prove incrociate tra le quali su 2 di questi pc cambiare scheda video ho notato che sul pc che originariamente dava problemi appena si rimuove il chip nvidia ( in questo caso ho sostituito la scheda video con una ati ) l'errore scompare su uno invece ( quello che di base non dava problemi) ho provato a mettere una scheda video nvidia e appena installata da subito l'errore rimossa l'errore è sparito purtroppo su uno di questi pc non mi è possibile rimuovere i chip nvidia in quanto è una scheda madre all-in-one con chipset nvidia ( e fra le altre cose non ho neanche una scheda video pci-express non nvidia per fare una prova se sia solo colpa della gpu) su uno degli altri non sarebbe complicato mi basterebbe cambiargli scheda video.

qualcuno saprebbe dirmi se è possibile fare qualcosa per risolvere il problema su tutti i pc senza dover cambiare nessun componente???

lorenzo001
01-06-2013, 14:51
Come premessa mi sembra veramente strano che un programma gestionale scritto in COBOL abbia questo tipo di problemi con l'hardware.

Quell'errore

157 Not enough program memory: object file too large to load (Recoverable)

indica che non è disponibile abbastanza memoria. Ma quindi stiamo parlando di qualcosa di molto vecchio, parliamo di DOS ...

Su quale sistema operativo riscontri i problemi, a prescindere dal chip di memoria ? Non è che nei sistemi in cui ci sono degli errori, c'è qualcosa relativo a NVIDIA che viene caricato e occupa memoria in modo che il tuo programma poi non possa avviarsi?

Controlla con il comando MEM la disponibilità di memoria ...

coguaro
01-06-2013, 15:26
Come premessa mi sembra veramente strano che un programma gestionale scritto in COBOL abbia questo tipo di problemi con l'hardware.

Quell'errore

157 Not enough program memory: object file too large to load (Recoverable)

indica che non è disponibile abbastanza memoria. Ma quindi stiamo parlando di qualcosa di molto vecchio, parliamo di DOS ...

Su quale sistema operativo riscontri i problemi, a prescindere dal chip di memoria ? Non è che nei sistemi in cui ci sono degli errori, c'è qualcosa relativo a NVIDIA che viene caricato e occupa memoria in modo che il tuo programma poi non possa avviarsi?

Controlla con il comando MEM la disponibilità di memoria ...

si parliamo di un programma molto vecchio e gira ancora sotto dos ed è gia da un po che sto tentando di convincerli a cambiarlo ma per ora non ci sono ancora riuscito :( :(

la spiegazione dell'errore da te riportata l'avevo trovata anche io e all'inizio pensavo anche io ad un problema di memoria ( adesso non sono in prossimità dei pc e non riesco a fare la verifica con MEM appena riesco posto i risultati su tutti e due i pc con tutte e due le schede forse tra un oretta o che riesco) facendo diverse verifiche però ho notato che lo fa solo se ci sono chip nvidia mi sembra molto strano che un driver nvidia per windows porti via più memoria dos rispetto ad un driver ati o intel fra le altre cose lo fa su diversi chip nvidia non solo su un modello???

EDIT

questo è quello che mi ritrovo col comando MEM sul pc prima con la scheda originale intel e poi con una scheda video nvidia



C:\>mem


655360 byte di memoria convenzionale complessiva
655360 byte disponibili per MS-DOS
627312 dim. massima di un programma eseguibile

1048576 byte contigui di memoria estesa
0 byte di memoria estesa contigua disponibili
941056 byte di memoria estesa disponibili
MS-DOS è residente nell'area di memoria alta.

C:\>mem/p

Segmento Totale Nome Tipo
-------- ---------------- ----------- --------
000000 000400 Vettore di interrupt
000400 000100 Area per le comunicazioni ROM
000500 000200 rea per le comunicazioni DOS

000700 IO 000370 Dati di sistema

000A70 MSDOS 001630 Dati di sistema

0020A0 IO 002040 Dati di sistema
KBD 000CE0 Programma di sistema
HIMEM 0004E0 DEVICE=
000490 FILES=
000090 FCBS=
000120 LASTDRIVE=
0007E0 STACKS=
0040F0 COMMAND 000B40 Programma
004C40 MSDOS 000070 -- Libera --
004CC0 COMMAND 0004C0 Ambiente
005190 MEM 0003F0 Ambiente
005590 KB16 0017D0 Programma
006D70 MEM 0174E0 Programma
01E260 MSDOS 081D80 -- Libera --
09FFF0 SYSTEM 02E000 Programma di sistema

0CE000 IO 003100 Dati di sistema
MOUSE 0030F0 Programma di sistema
0D1110 MSDOS 0003E0 -- Libera --
0D1500 MSCDEXNT 0001D0 Programma
0D16E0 REDIR 000A70 Programma
0D2160 DOSX 0087A0 Programma
0DA910 DOSX 000080 Dati
0DA9A0 MSDOS 005650 -- Libera --


655360 byte di memoria convenzionale complessiva
655360 byte disponibili per MS-DOS
627312 dim. massima di un programma eseguibile

1048576 byte contigui di memoria estesa
0 byte di memoria estesa contigua disponibili
941056 byte di memoria estesa disponibili
MS-DOS è residente nell'area di memoria alta.

C:\>mem/d

Segmento Totale Nome Tipo
-------- ---------------- ----------- --------
000000 000400 Vettore di interrupt
000400 000100 Area per le comunicazioni ROM
000500 000200 rea per le comunicazioni DOS

000700 IO 000370 Dati di sistema
CON Driver periferiche di sistema
AUX Driver periferiche di sistema
PRN Driver periferiche di sistema
CLOCK$ Driver periferiche di sistema
COM1 Driver periferiche di sistema
LPT1 Driver periferiche di sistema
LPT2 Driver periferiche di sistema
LPT3 Driver periferiche di sistema
COM2 Driver periferiche di sistema
COM3 Driver periferiche di sistema
COM4 Driver periferiche di sistema

000A70 MSDOS 001630 Dati di sistema

0020A0 IO 002040 Dati di sistema
KBD 000CE0 Programma di sistema
HIMEM 0004E0 DEVICE=
XMSXXXX0 Periferica installata
000490 FILES=
000090 FCBS=
000120 LASTDRIVE=
0007E0 STACKS=
0040F0 COMMAND 000B40 Programma
004C40 MSDOS 000070 -- Libera --
004CC0 COMMAND 0004C0 Ambiente
005190 MEM 0003F0 Ambiente
005590 KB16 0017D0 Programma
006D70 MEM 0174E0 Programma
01E260 MSDOS 081D80 -- Libera --
09FFF0 SYSTEM 02E000 Programma di sistema

0CE000 IO 003100 Dati di sistema
MOUSE 0030F0 Programma di sistema
0D1110 MSDOS 0003E0 -- Libera --
0D1500 MSCDEXNT 0001D0 Programma
0D16E0 REDIR 000A70 Programma
0D2160 DOSX 0087A0 Programma
0DA910 DOSX 000080 Dati
0DA9A0 MSDOS 005650 -- Libera --


655360 byte di memoria convenzionale complessiva
655360 byte disponibili per MS-DOS
627312 dim. massima di un programma eseguibile

1048576 byte contigui di memoria estesa
0 byte di memoria estesa contigua disponibili
941056 byte di memoria estesa disponibili
MS-DOS è residente nell'area di memoria alta.

C:\>mem/c

Memoria convenzionale :

Nome Dim. in decimale Dim in esad
------------- --------------------- -------------
MSDOS 11984 ( 11.7K) 2ED0
KBD 3296 ( 3.2K) CE0
HIMEM 1248 ( 1.2K) 4E0
COMMAND 4096 ( 4.0K) 1000
KB16 6096 ( 6.0K) 17D0
FREE 112 ( 0.1K) 70
FREE 1008 ( 1.0K) 3F0
FREE 627312 (612.6K) 99270

Libera totale : 628432 (613.7K)

Memoria alta :

Nome Dim. in decimale Dim in esad
------------- --------------------- -------------
SYSTEM 188400 (184.0K) 2DFF0
MOUSE 12528 ( 12.2K) 30F0
MSCDEXNT 464 ( 0.5K) 1D0
REDIR 2672 ( 2.6K) A70
DOSX 34848 ( 34.0K) 8820
FREE 992 ( 1.0K) 3E0
FREE 22096 ( 21.6K) 5650

Libera totale : 23088 ( 22.5K)

Byte totali disponibili per i programmi (convenz+super) : 651520 (636.3K)
Dim. massima di un programma eseguibile : 627312 (612.6K)
Dim. massima di un blocco libero di memoria superiore : 22096 ( 21.6K)

1048576 byte contigui di memoria estesa
0 byte di memoria estesa contigua disponibili
941056 byte di memoria estesa disponibili
MS-DOS è residente nell'area di memoria alta.

C:\>




C:\>mem


655360 byte di memoria convenzionale complessiva
655360 byte disponibili per MS-DOS
592576 dim. massima di un programma eseguibile

1048576 byte contigui di memoria estesa
0 byte di memoria estesa contigua disponibili
941056 byte di memoria estesa disponibili
MS-DOS è residente nell'area di memoria alta.

C:\>mem/p

Segmento Totale Nome Tipo
-------- ---------------- ----------- --------
000000 000400 Vettore di interrupt
000400 000100 Area per le comunicazioni ROM
000500 000200 rea per le comunicazioni DOS

000700 IO 000370 Dati di sistema

000A70 MSDOS 001630 Dati di sistema

0020A0 IO 002040 Dati di sistema
KBD 000CE0 Programma di sistema
HIMEM 0004E0 DEVICE=
000490 FILES=
000090 FCBS=
000120 LASTDRIVE=
0007E0 STACKS=
0040F0 COMMAND 000B40 Programma
004C40 MSDOS 000070 -- Libera --
004CC0 COMMAND 0004C0 Ambiente
005190 DOSX 0087A0 Programma
00D940 MEM 0003F0 Ambiente
00DD40 KB16 0017D0 Programma
00F520 MEM 0174E0 Programma
026A10 MSDOS 0795D0 -- Libera --
09FFF0 SYSTEM 031000 Programma di sistema

0D1000 IO 003100 Dati di sistema
MOUSE 0030F0 Programma di sistema
0D4110 MSDOS 0003E0 -- Libera --
0D4500 MSCDEXNT 0001D0 Programma
0D46E0 REDIR 000A70 Programma
0D5160 DOSX 000080 Dati
0D51F0 MSDOS 00AE00 -- Libera --


655360 byte di memoria convenzionale complessiva
655360 byte disponibili per MS-DOS
592576 dim. massima di un programma eseguibile

1048576 byte contigui di memoria estesa
0 byte di memoria estesa contigua disponibili
941056 byte di memoria estesa disponibili
MS-DOS è residente nell'area di memoria alta.

C:\>mem/d

Segmento Totale Nome Tipo
-------- ---------------- ----------- --------
000000 000400 Vettore di interrupt
000400 000100 Area per le comunicazioni ROM
000500 000200 rea per le comunicazioni DOS

000700 IO 000370 Dati di sistema
CON Driver periferiche di sistema
AUX Driver periferiche di sistema
PRN Driver periferiche di sistema
CLOCK$ Driver periferiche di sistema
COM1 Driver periferiche di sistema
LPT1 Driver periferiche di sistema
LPT2 Driver periferiche di sistema
LPT3 Driver periferiche di sistema
COM2 Driver periferiche di sistema
COM3 Driver periferiche di sistema
COM4 Driver periferiche di sistema

000A70 MSDOS 001630 Dati di sistema

0020A0 IO 002040 Dati di sistema
KBD 000CE0 Programma di sistema
HIMEM 0004E0 DEVICE=
XMSXXXX0 Periferica installata
000490 FILES=
000090 FCBS=
000120 LASTDRIVE=
0007E0 STACKS=
0040F0 COMMAND 000B40 Programma
004C40 MSDOS 000070 -- Libera --
004CC0 COMMAND 0004C0 Ambiente
005190 DOSX 0087A0 Programma
00D940 MEM 0003F0 Ambiente
00DD40 KB16 0017D0 Programma
00F520 MEM 0174E0 Programma
026A10 MSDOS 0795D0 -- Libera --
09FFF0 SYSTEM 031000 Programma di sistema

0D1000 IO 003100 Dati di sistema
MOUSE 0030F0 Programma di sistema
0D4110 MSDOS 0003E0 -- Libera --
0D4500 MSCDEXNT 0001D0 Programma
0D46E0 REDIR 000A70 Programma
0D5160 DOSX 000080 Dati
0D51F0 MSDOS 00AE00 -- Libera --


655360 byte di memoria convenzionale complessiva
655360 byte disponibili per MS-DOS
592576 dim. massima di un programma eseguibile

1048576 byte contigui di memoria estesa
0 byte di memoria estesa contigua disponibili
941056 byte di memoria estesa disponibili
MS-DOS è residente nell'area di memoria alta.

C:\>mem/c

Memoria convenzionale :

Nome Dim. in decimale Dim in esad
------------- --------------------- -------------
MSDOS 11984 ( 11.7K) 2ED0
KBD 3296 ( 3.2K) CE0
HIMEM 1248 ( 1.2K) 4E0
COMMAND 4096 ( 4.0K) 1000
DOSX 34720 ( 33.9K) 87A0
KB16 6096 ( 6.0K) 17D0
FREE 112 ( 0.1K) 70
FREE 1008 ( 1.0K) 3F0
FREE 592576 (578.7K) 90AC0

Libera totale : 593696 (579.8K)

Memoria alta :

Nome Dim. in decimale Dim in esad
------------- --------------------- -------------
SYSTEM 200688 (196.0K) 30FF0
DOSX 128 ( 0.1K) 80
MOUSE 12528 ( 12.2K) 30F0
MSCDEXNT 464 ( 0.5K) 1D0
REDIR 2672 ( 2.6K) A70
FREE 992 ( 1.0K) 3E0
FREE 44544 ( 43.5K) AE00

Libera totale : 45536 ( 44.5K)

Byte totali disponibili per i programmi (convenz+super) : 639232 (624.3K)
Dim. massima di un programma eseguibile : 592576 (578.7K)
Dim. massima di un blocco libero di memoria superiore : 44544 ( 43.5K)

1048576 byte contigui di memoria estesa
0 byte di memoria estesa contigua disponibili
941056 byte di memoria estesa disponibili
MS-DOS è residente nell'area di memoria alta.

C:\>


con la scheda nvidia c'è molta meno memoria come "Dim. massima di un programma eseguibile" ma non riesco a capire cosa potrebbe essere

lorenzo001
01-06-2013, 17:03
La differenza è nel modulo

DOSX

Controlla nell'AUTOEXEC e prova a non caricare questo eseguibile.

coguaro
01-06-2013, 17:20
La differenza è nel modulo

DOSX

Controlla nell'AUTOEXEC e prova a non caricare questo eseguibile.

disattivandolo sembra funzionare ( se riesco domani farò qualche prova in più e vedere se non da altri problemi ) però perchè con l'nvidia mi abbasa la "dim. massima di un programma eseguibile" visto che quel modulo viene caricato con qualunque scheda???

lorenzo001
01-06-2013, 17:25
Nel primo caso DOSX è caricato in "memoria alta", nel secondo nella "memoria convenzionale".

O modifichi la modalità di caricamento (in modo che DOSX venga caricato *sempre* in memoria alta) o, se non serve, non carichi proprio DOSX.

Dai un'occhiata al file AUTOEXEC.NT nei due casi.

coguaro
01-06-2013, 17:39
Nel primo caso DOSX è caricato in "memoria alta", nel secondo nella "memoria convenzionale".

O modifichi la modalità di caricamento (in modo che DOSX venga caricato *sempre* in memoria alta) o, se non serve, non carichi proprio DOSX.

Dai un'occhiata al file AUTOEXEC.NT nei due casi.

questo è l'autoexec.net


@echo off

REM AUTOEXEC.BAT non viene utilizzato per inizializzare l'ambiente MS-DOS.
REM AUTOEXEC.NT viene utilizzato per inizializzare l'ambiente MS-DOS a meno che
REM non sia specificato un file di avvio differente in un PIF di applicazione.

REM Installazione di estensioni CD ROM
lh %SystemRoot%\system32\mscdexnt.exe

REM Installazione di redirector di rete (caricare prima di dosx.exe)
lh %SystemRoot%\system32\redir

REM Installazione del supporto DPMI
lh %SystemRoot%\system32\dosx

REM La riga seguente abilita il supporto Sound Blaster 2.0 su NTVDM.
REM Il comando per l'impostazione dell'ambiente BLASTER è il seguente:
REM SET BLASTER=A220 I5 D1 P330
REM dove:
REM A specifica la porta I/O di base del Sound Blaster
REM I specifica la riga del livello di interrupt
REM D specifica il canale DMA a 8 bit
REM P specifica la porta I/O di base MPU-401
REM T specifica il tipo di scheda Sound Blaster
REM 1 - Sound Blaster 1.5
REM 2 - Sound Blaster Pro I
REM 3 - Sound Blaster 2.0
REM 4 - Sound Blaster Pro II
REM 6 - SOund Blaster 16/AWE 32/32/64
REM
REM Il valore predefinito è A220 I5 D1 e P330. Se le opzioni non vengono
REM specificate, verrà utilizzato il valore predefinito. (NOTA: poiché tutte
REM le porte sono virtuali, non occorre che le informazioni qui fornite corrispondano
REM alle reali impostazioni dell'hardware.) NTVDM supporta soltanto Sound Blaster 2.0.
REM L'opzione T deve essere impostata a 3, se specificata.
SET BLASTER=A220 I5 D1 P330 T3

REM Per disabilitare il supporto Sound Blaster 2.0 su NTVDM, specificare un indirizzo
REM di porta I/O di base del Sound Blaster non valido. Ad esempio:
REM SET BLASTER=A0


ed è identico in tutti e due i casi non riesco a capire come mai con nvidia DOSX venga caricato in memoria convenzionale invece con altre schede video venga caricato in memoria alta???

il loadhigh ( anche se abbreviato lh ) c'è gia e teoricamente dovrebbe già essere questa la sua forzatura o sbaglio???

lorenzo001
01-06-2013, 18:02
Il comando LH prova a caricare il modulo in memoria alta - a patto che ci sia spazio - altrimenti viene ignorato e il modulo viene caricato nella memoria convenzionale.

Vedo che in memoria alta il sistema (SYSTEM) nel secondo caso è più grande (probabilmente sono due versioni diverse di DOS) e quindi non c'è spazio sufficiente per il DOSX.

Se non ti serve potresti eliminare (o inserire una REM) nella linea di caricamento di DOSX. Oppure potresti caricare in memoria convenzionale i primi due moduli e vedere se DOSX può essere caricato in memoria alta. A questo punto dovresti controllare se il "risparmio" di memoria convenzionale ti consente di avviare il tuo programma.

coguaro
01-06-2013, 18:24
Il comando LH prova a caricare il modulo in memoria alta - a patto che ci sia spazio - altrimenti viene ignorato e il modulo viene caricato nella memoria convenzionale.

Vedo che in memoria alta il sistema (SYSTEM) nel secondo caso è più grande (probabilmente sono due versioni diverse di DOS) e quindi non c'è spazio sufficiente per il DOSX.

Se non ti serve potresti eliminare (o inserire una REM) nella linea di caricamento di DOSX. Oppure potresti caricare in memoria convenzionale i primi due moduli e vedere se DOSX può essere caricato in memoria alta. A questo punto dovresti controllare se il "risparmio" di memoria convenzionale ti consente di avviare il tuo programma.

ma il pc è lo stesso è solo cambiata la scheda video
come potrebbe essere che a parita di pc cambiando il (SYSTEM) occupi di più con una scheda video rispetto ad un'altra???
per ora ho messo il rem davanti al DOSX e faremo qualche prova e vedremo come va comunque come hai visto tutti i comandi sono con lh davanti non saprei cos'altro fare???

lorenzo001
01-06-2013, 18:31
Ti ho già detto che il LH è solo un "suggerimento" ...

Per il resto, non so, probabilmente con quella scheda il sistema carichi delle parti in più o allochi qualche buffer dati in più ...

Potresti provare come ti ho suggerito ad esempio caricando in memoria convenzionale il primo modulo

%SystemRoot%\system32\mscdexnt.exe

coguaro
01-06-2013, 18:35
Ti ho già detto che il LH è solo un "suggerimento" ...

Per il resto, non so, probabilmente con quella scheda il sistema carichi delle parti in più o allochi qualche buffer dati in più ...

Potresti provare come ti ho suggerito ad esempio caricando in memoria convenzionale il primo modulo

%SystemRoot%\system32\mscdexnt.exe

ho provato a caricare i primi due moduli in convenzionale e mettere lh a DOSX ma continua a caricarlo in convenzionale??
per ora prova a lasciarlo disattivato e vedere come va se non da altri problemi proviamo a lasciarlo così???

lorenzo001
01-06-2013, 18:37
Ok prova così

coguaro
01-06-2013, 19:06
vediamo come va così speriamo di non avere altri problemi :) :D

coguaro
30-06-2013, 13:57
per ora sembra funzionare senza problemi anche senza DOSX ma vorrei sapere cosa si potrebbe fare per vedere cosa c'è che non gli permette di essere caricato in memoria alta e va in convenzionale???