Asterisk stirbt mit "Ungültiger Maschinenbefehl" auf AMD K6-2 mit chan_sccp

Mysterious

Neuer User
Mitglied seit
3 Nov 2005
Beiträge
158
Punkte für Reaktionen
0
Punkte
16
Hallo,

habe soeben einen Asterisk auf einem neu installierten Debian etch System eingerichtet. Asterisk 1.4.11,zaptel und chan_sccp-b aus den Sourcen compiliert und zu starten versucht.

Asterisk stürtzt mir mit "Ungültiger Maschinenbefehl" nach dem Start ab sobald ich das aktuelle "chan_sccp-b" Modul einbinde. Auf anderen Systemen lies sich Asterisk problemlos auf gleiche weise installieren. Kann es daram leigen das ich ein AMD-K6-2 System auf nem Asus P5A einsetze? Muss ich das speziell kompilieren für AMD-Systeme???

Configdateien sind alle die Default-Configs und unverändert.

Hat jemand Erfahrung mit AMD-Systemen der K6-2 Reihe mit sccp-Modul?

WEnn ein Core-Dump benötigt wird könnte mir jemand sagen wie ich den erstelle?

MFG

Mysterious
 
Hatte das Problem mal auf einem VIA C3, der sich als i686 ausgab, aber nur ein i586 war. Ich änderte einfach die Build-Architektur "march" im Makefile von i686 auf i586 ab, danach gings. Der K6-2 ist nämlich auch nur ein 586er.
 
Im Makefile 'PROC=' ersetzen mit 'PROC=k6-3'
Damit läuft es problemlos auf meinem alix-board (chan-capi und asterisk selbst ist auch damit kompiliert).

Mit k6-2/3 wird 3dnow enabled. Cpuinfo sollte bei dir in den flags dasselbe anzeigen. Den SSE Befehlssatz ab PIII beherrschen die Prozessoren nicht!

Code:
alix:/usr/src/chan-sccp-HEAD# cat /proc/cpuinfo
processor       : 0
vendor_id       : AuthenticAMD
cpu family      : 5
model           : 10
model name      : Geode(TM) Integrated Processor by AMD PCS
stepping        : 2
cpu MHz         : 498.054
cache size      : 128 KB
fdiv_bug        : no
hlt_bug         : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 1
wp              : yes
flags           : fpu de pse tsc msr cx8 sep pge cmov clflush mmx mmxext 3dnowext 3dnow
bogomips        : 996.92
clflush size    : 32
 
Hey, danke für den Tipp
Okay, habe in dem Makefile im Asterisk Source Code von PROC=athlon auf PROC=k6-3 geändert.

Kompiliert gerade (dauert bisschen auf der Kiste ;-) )

Muss ich beim kompilieren anderee Module wie sccp oder chan_capi auf noch ein Flag ändern oder übernehmen die das automatisch vom Asterisk?

MFG

Mysterious
 
Mist...immer noch "Ungültiger Maschinenbefehl"

Wo muss denn dieses Flag genau gesetzt werden. Ind er Toplevel-Makefile von Asterisk hab ich die Änderung gemacht. Kann mir jemand mal genau sagen was wo geändert werden muss? Wie gesagt im Makefile der Asterisk Quelle gab ein PROC=athlon welches ich geändert habe aber scheinbar keinen Effekt hat. oder muss ich auch in sccp Modul was ändern?

MFG

Mysterious
 
Erstens muss man die Änderungen in jedem Makefile machen (asterisk, chan-sccp, chan-capi etc.)

Unter asterisk muss man auch sicherstellen, dass das PROC-statement auch durchlaufen wird!
Welcher Prozessor automatisch erkannt wurde steht unter config.log am Anfang (i586, i686 ect.)

PROC=atlon durch PROC=K6-3 zu ersetzen funktioniert deshalb nicht, da davor eine if-Abfrage sitzt und das PROC= nicht ausgeführt wird!

hier sollte es sinnvollerweise rein:
Code:
MOD_SUBDIR_CFLAGS=-I$(ASTTOPDIR)/include
OTHER_SUBDIR_CFLAGS=-I$(ASTTOPDIR)/include
PROC=k6-3 <----------------------------------------------------
ifeq ($(OSARCH),linux-gnu) <- wg. des ifeq kommt er nicht zum PROC ;-)
  ifeq ($(PROC),x86_64)
    # You must have GCC 3.4 to use k8, otherwise use athlon
    # PROC=k8
    #PROC=athlon
  endif

Bei chan-sccp kann man dagegen nichts verkehrt machen!

edit: wichtig ist jedoch grundsätzlich erstmal mit 'cat/proc/cpuinfo' zu schauen welchen Befehlssatz die CPU eigentlich versteht, bevor man hier irgendetwas manipuliert.
 
Super, danke hat soweit funktioniert und läuft so wies ausschaut stabil.

Hab PROC=k6-3 auch in der sccp Makefile eingetragen wobei ich nicht weis ob das irgend einen Effekt hatte oder das ignoriert wurde... denke der Parameter ist ja nur relevant wenn das Programm oder Modul auf Optimierungsoptionen der CPU wie SSE SSE2 oder 3d-now,usw zugreift oder?
 
PROC=k6-3 sorgt dafür, dass 3dnow, mmx-Maschineninstruktionen vom compiler erzeugt werden. SSE und SSE2 bei PROC=i686 und PROC=pentium4 was definitiv ein K6 nicht kann -> ungültiger Maschinenbefehl!

Deshalb nochmals mein Tipp: cat /proc/cpuinfo ;-)
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.