|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Nov 2002
Messaggi: 4329
|
[c] message queue...
premessa: oggi me ne vado dal lab con tutto funzionante al 100%....stasera mi viene in mente una modifichina a un programma (in unix) e accedo da casa mia con ssh....in pratica ho un client che manda un messaggio su una coda a un server e il server dovrebbe (dopo un po di scazzi) rimandare una risposta...il fatto è che mi si pianta perche il client non riesce nemmeno a fare msgsnd...errno = 22 (non so che errore sia e non so come vederlo), in ogni caso sono andato via dal lab oggi che tutto andava senza alcun problema...spero che qualcuno mi sappia indirizzare perche sto schiumando un attimino
![]()
__________________
|18k+|slk800|a7n8x|1Gb/ddr400|Gf4mx440|Pio108|WD 160Gb|Case|Uni|Album|AnimeClick|OneManga| |ClassicThrash!|BNR Metal|TrueMetal|Dime|Chuck| |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Gli errori li stampi in forma "umana" con perror (o strerror/strerror_r).
22 dovrebbe essere "EINVAL", invalid argument. Dalla documentazione di msgsnd: Codice:
EINVAL Invalid msqid value, or non-positive mtype value, or invalid msgsz value (less than 0 or greater than the system value MSGMAX).
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Nov 2002
Messaggi: 4329
|
grazie!
pero deve essere un problema tricky perche praticamente oggi abbiamo quasi finito tutto il progetto, funzionante al 100% con prove di qualsiasi tipo, e ora che sono appena tornato a casa e mi sono connesso non riesce neanche a mandare un carattere al server (cioe un messaggio composto da un semplice carattere fallisce)...c e proprio qualcosa di marcio che dovro chiedere ai tecnici, perche andare a cercare il problema cosi si schiuma e basta...
__________________
|18k+|slk800|a7n8x|1Gb/ddr400|Gf4mx440|Pio108|WD 160Gb|Case|Uni|Album|AnimeClick|OneManga| |ClassicThrash!|BNR Metal|TrueMetal|Dime|Chuck| |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Nov 2002
Messaggi: 4329
|
rigrazie! ho guardato con piu attenzione e il messaggio che mando (una struttura) e piu grande della grandezza massima
![]() tnx, mi hai salvato, anche perche non vado d accordo col c e quando ci devo lavorare sopra mi passa ogni voglia e divento stupido...ora il guaio sara convincere i miei compagni che si deve cambiare tutto perche se funziona in lab ci va solo di culo :|
__________________
|18k+|slk800|a7n8x|1Gb/ddr400|Gf4mx440|Pio108|WD 160Gb|Case|Uni|Album|AnimeClick|OneManga| |ClassicThrash!|BNR Metal|TrueMetal|Dime|Chuck| |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Nov 2002
Messaggi: 4329
|
chiedo solo un altro po di attenzione, visto che ovviamente non poteva funzionare tutto...
in pratica succede questo: -il client manda una richiesta al serve tramite una coda di messaggi (manda correttamente e con dati giusti) -il server la riceve (correttamente e con dati giusti) -il server prova a creareun thread che soddisfi la richiesta, ma non ce la fa; strerror(errno) mi ritorna "Error 0" non sapendo come identificare l errore, sono andao a vedere su pthread_create e ce ne sono solo di 3 tipi: -EAGAIN : massimo numero di threads sforato (non il mio caso, non crea neanche l unico che mi serve) -EINVAL : attr invalido, io passo NULL e in lab ha sempre funzionato! (poi chi è che non passa NULL?) -EPERM : problema di permessi...possibile? a naso direi di no visto che crea tutto il resto (code, semafori, shmem, ecc) sono proprio senza idee...potrei anche mettere degli attributi diversi da NULL (che dovrebbero essere quelli di default), ma a che pro? e come? help!
__________________
|18k+|slk800|a7n8x|1Gb/ddr400|Gf4mx440|Pio108|WD 160Gb|Case|Uni|Album|AnimeClick|OneManga| |ClassicThrash!|BNR Metal|TrueMetal|Dime|Chuck| |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Nov 2002
Messaggi: 4329
|
aggiungo: ho appena provato a creare un thread maffo per vedere se funziona; sicuramente non è EPERM perche funziona; quasi sicuramente non è EAGAIN perche come ho gia detto non c e neanche un thread; ergo rimane EINVAL...ma EINVAL de che? che se mi loggo in lab e lo faccio girare non fa una piega? inoltre gli argomenti di pthread_create non sono cosi difficili da capire persino per uno scarpone di c come me :|
__________________
|18k+|slk800|a7n8x|1Gb/ddr400|Gf4mx440|Pio108|WD 160Gb|Case|Uni|Album|AnimeClick|OneManga| |ClassicThrash!|BNR Metal|TrueMetal|Dime|Chuck| |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
man pthread_create
pthread_create non imposta errno in caso di errore; ritorna direttamente...errno: Codice:
errno = pthread_create(...); if (errno!=0) perror("pthread_create");
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Nov 2002
Messaggi: 4329
|
azz, mea culpa, grazie mille! pero sono triste ugualmente :|
----> pthread_create: unknown Error inizio a pensare che ci dovro lavorare solo in lab ![]()
__________________
|18k+|slk800|a7n8x|1Gb/ddr400|Gf4mx440|Pio108|WD 160Gb|Case|Uni|Album|AnimeClick|OneManga| |ClassicThrash!|BNR Metal|TrueMetal|Dime|Chuck| |
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
...e stampando il valore di errno ottieni...?
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Nov 2002
Messaggi: 4329
|
azz, lo sconforto porta a non ragionare piu...sry per il reply da noob
vale -1...al che ho provato a googlare un attimo o a riguardare il man ma continuo a non trovarmi...
__________________
|18k+|slk800|a7n8x|1Gb/ddr400|Gf4mx440|Pio108|WD 160Gb|Case|Uni|Album|AnimeClick|OneManga| |ClassicThrash!|BNR Metal|TrueMetal|Dime|Chuck| |
![]() |
![]() |
![]() |
#11 |
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
pthread_create non può ritornare -1.
Su che diavolo di sistema stai provando?
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
![]() |
![]() |
![]() |
#12 |
Senior Member
Iscritto dal: Nov 2002
Messaggi: 4329
|
sono comodo comodo in windows, in camera mia, e sto usando SSHSecureShellClient-3.2.9, un client ssh...
__________________
|18k+|slk800|a7n8x|1Gb/ddr400|Gf4mx440|Pio108|WD 160Gb|Case|Uni|Album|AnimeClick|OneManga| |ClassicThrash!|BNR Metal|TrueMetal|Dime|Chuck| |
![]() |
![]() |
![]() |
#13 |
Senior Member
Iscritto dal: Nov 2002
Messaggi: 4329
|
piu che altro, su che diavolo di sistema lavoro in lab (solaris 10) che non fa una piega con alcuni errori...per esempio, la dimensione del nostro messaggio (per la coda) era di piu di 10000, mentre il massimo (dal man) è 8192...cambiato quello infatti da qui non si piantava piu in quel punto!
sto provando a votarmi a qualche santo per il momento, ma senza grossi risultati...
__________________
|18k+|slk800|a7n8x|1Gb/ddr400|Gf4mx440|Pio108|WD 160Gb|Case|Uni|Album|AnimeClick|OneManga| |ClassicThrash!|BNR Metal|TrueMetal|Dime|Chuck| |
![]() |
![]() |
![]() |
#14 | ||
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Quote:
Quote:
![]() Codice:
MSGMAX Maximum size for a message text: 8192 bytes (on Linux, this limit can be read and modified via /proc/sys/kernel/msgmax).
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
||
![]() |
![]() |
![]() |
#15 |
Senior Member
Iscritto dal: Nov 2002
Messaggi: 4329
|
non sono su cygwin (orribbile), altrimenti che mi servirebbe usare ssh per accedere al lab? prima ho provato a installare solaris 10 (ci ha messo qualcosa come 10 ore) ma appena acceso non funziona il mouse usb (c e un known bug, dice che alcuni mouse logitech non funzionano bene) e non so come fixare....al che ho pensato, perche non provare ad usare ssh (che non ho la minima idea di che cosa sia e non lo voglio sapere per il momento, mi serve solo che funzioni):
apro una shell e ci lavoro dentro esattamente come se fossi seduto in lab (ma proprio esattamente, ho persino i miei comandi personalizzati, uso gcc, runno i programmi eccetera)... evidentemente questo client ssh si interfaccia in qualche modo con il mio login all uni e fa da ponte; è pero alquanto strano, perche posso compilare con gcc (usare un prog dal mio lab) ma spesso e volentieri si incagliano i programmi che scrivo (vedi la faccenda del size massimo per i messaggi della coda, o quest impossibilita nel creare il thread)...è un peccato perche da casa ero molto piu comodo e lavorare su solaris è sempre una fatica mentale non indifferente... in ogni caso non sono ancora venuto a capo di quell errore, per ora rinuncio, a mente fresca poi ci tornero sopra...
__________________
|18k+|slk800|a7n8x|1Gb/ddr400|Gf4mx440|Pio108|WD 160Gb|Case|Uni|Album|AnimeClick|OneManga| |ClassicThrash!|BNR Metal|TrueMetal|Dime|Chuck| |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:27.