Du bist nicht eingeloggt! Möglicherweise kannst du deswegen nicht alles sehen.
  (Noch kein mods.de-Account? / Passwort vergessen?)
Zur Übersichtsseite
Hallo anonymer User.
Bitte logge dich ein
oder registriere dich!
 Moderiert von: mercury, Schalentier


 Thema: Der Linux-Thread 100 // 0x23 ( const int MAX_POST = 30 * 100; // 0x23 )
« erste « vorherige 1 ... 22 23 24 25 [26] 27 28 29 30 ... 100 nächste » letzte »
erste ungelesene Seite | letzter Beitrag 
csde_rats

AUP csde_rats 04.09.2021
 
Zitat von GandalfDerPinke

Ähm, wat?



Wenn das OS die CPU nicht unterstützt, kann man neue Befehlssätze u.U. nicht benutzen (z.B. alles, was neue Register in die ISA einbaut) [das funktioniert dann schon korrekt, weil das OS ISA-Erweiterungen korrekt initialisieren muss, es gibt sie dann halt einfach nicht9. Für stabilen Betrieb wär ein aktueller Microcode ganz nice, aber den muss das OS in die CPU laden (wer spielt schon BIOS-Updates ein?) [0]. Damit Power-Management funktioniert, braucht das OS jedes mal neue Treiber, wenn es irgenwelche neuen C, S, T oder P-States gibt. Für neue Architekturen / Chips braucht der Scheduler u.U. Updates. Gibt bestimmt noch mehr Dinge, wo das OS die CPU explizit unterstützen muss, damit der Rechner anständig läuft.


[0] Das ist jetzt nicht so ganz unwichtig, in der Vergangenheit haben Microcode-Updates Dinge gefixt wie: Der ganze Rechner hängt sich auf, wenn irgendeine Anwendung einen bestimmten Befehl benutzt. Oder auch: Eine VM führt $dieseMagischeSequenz aus und kann damit im Speicher vom Hypervisor rumschreiben.
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von csde_rats am 16.03.2017 14:27]
16.03.2017 14:26:12  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
GandalfDerPinke

GandalfDerPinke
Kam das bei Windows schon mal vor, dass die wirklich nen Cut gemacht haben und alte Betriebssysteme für neuere Hardware außen vor blieben?
16.03.2017 14:33:00  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
[KdM]MrDeath

mrdeath2
 
Zitat von csde_rats

Wenn es da noch mehr Stellen gibt... ZeroMQ (zmq_inproc) and be done with it. Wenn es nur die eine Stelle ist, ist das vielleicht ein bisschen Overkill.


gibt nur diese eine stelle dafür.
16.03.2017 14:33:08  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
kRush*

kRush*
 
Zitat von theromi

Ich habe in letzter Zeit riesige I/O Probleme bei Netcup. Habe den Root mit SSD und bekomme teilweise nur ein paar Byte/s geschrieben.

Da nach einem Neustart alles wieder tutti ist (für ein paar Tage) gehe ich aktuell noch davon aus, dass ich was verbockt habe. Wie debugged man sowas?


Hast du deren Image benutzt? Selber hochgezogen läuft wieder Bombe. *shrug*
16.03.2017 14:37:04  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
csde_rats

AUP csde_rats 04.09.2021
 
Zitat von GandalfDerPinke

Kam das bei Windows schon mal vor, dass die wirklich nen Cut gemacht haben und alte Betriebssysteme für neuere Hardware außen vor blieben?



Soweit ich weiß nicht, es läuft halt nur nicht so gut, Hersteller liefern keine Treiber mehr etc.

Also ja, wenn die Frage ist, ob das (auch) eine MS-Drückerbandenstrategie ist, um Windows 10 dem Rachen der Leute runterzuforcieren, dann ist die Antwort ja.

 
Zitat von kRush*

 
Zitat von theromi

Ich habe in letzter Zeit riesige I/O Probleme bei Netcup. Habe den Root mit SSD und bekomme teilweise nur ein paar Byte/s geschrieben.

Da nach einem Neustart alles wieder tutti ist (für ein paar Tage) gehe ich aktuell noch davon aus, dass ich was verbockt habe. Wie debugged man sowas?


Hast du deren Image benutzt? Selber hochgezogen läuft wieder Bombe. *shrug*




#baremetal #selbstgehostet #masterrace
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von csde_rats am 16.03.2017 15:04]
16.03.2017 15:04:17  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Oli

AUP Oli 21.12.2018
 
Zitat von B0rG*

Mit openssh und SFTP geht das eigentlich ganz gut. Ich habe das einmal konfiguriert und fand es recht einfach und unproblematisch.


Das scheint gar nicht übel zu sein, hat aber einige Mängel. Ich will folgendes erreichen: User legen Dateien in ein Verzeichnis /srv/dump, anschließend kann die Datei von einer Web-App (www-data) wegsortiert werden.

Wenn ich chroot auf /srv/dump mache, geht das nur, falls nur root /srv und /srv/dump schreiben kann. Ich muss also für die User ein schreibbares Subdirectory in /srv/dump erstellen, was unschön ist, weil sie bei sftp nicht direkt in dem Verzeichnis landen wo sie Dinge rein legen können.

Anschließend muss die Datei von www-data löschbar sein, aber ich denke, das lässt sich leicht einrichten.

/e: Mit einer Kombination von sshd ForceCommand und rssh geht es.

 
Code:
Match group scponly
     X11Forwarding no
     AllowTcpForwarding no
     ForceCommand /usr/local/bin/wrapper-shell
     PasswordAuthentication yes

/usr/local/bin/wrapper-shell
 
Code:
#! /bin/sh
rssh -c "$SSH_ORIGINAL_COMMAND"
[Dieser Beitrag wurde 3 mal editiert; zum letzten Mal von Oli am 16.03.2017 15:37]
16.03.2017 15:07:28  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
hoschi

hoschi
 
Zitat von csde_rats

[0] Das ist jetzt nicht so ganz unwichtig, in der Vergangenheit haben Microcode-Updates Dinge gefixt wie: Der ganze Rechner hängt sich auf, wenn irgendeine Anwendung einen bestimmten Befehl benutzt. Oder auch: Eine VM führt $dieseMagischeSequenz aus und kann damit im Speicher vom Hypervisor rumschreiben.



Das machen die nicht nur in der Vergangenheit, AMD wird wohl auch einen fuer Ryzen ausrollen. Im besten Fall, kommt das aber per BIOS-Update und nicht ueber das Betriebssystem.

 
Zitat von GandalfDerPinke

Kam das bei Windows schon mal vor, dass die wirklich nen Cut gemacht haben und alte Betriebssysteme für neuere Hardware außen vor blieben?



Im Consumermarkt kann ich mich nicht an so etwas erinnern es gibt auch keinen technischen Grund fuer diese laecherliche Fehlermeldung. Microsoft deaktiviert damit ja den bereits bestehenden Support.

csde_rats fuehrt da zwar eine Menge Punkte auf, aber das sind alle nicht entscheidend, es zaehlt nur X86_32 oder X86_64. Niemand auf der Welt hindert dich daran ein Debian 6 oder Windows XP auf Ryzen oder Core ix 7xxx zu installieren. Dann laeuft halt das Power-Management nicht so toll und im unguenstigsten Fall werden die IRQs oder was mit APIC ungeschickt verteilt. Was Microsoft da macht ist einfach nur gnadenlos Erpressung zu Windows 10! Huebschen neuen Prozessor haben Sie da? Waere doch Schade, wenn der mit Sicherheitsluecken zu kaempfen haette?

Loesung:
Windows 7 auf altem Intel Updaten, Platte raus und in neues System reinstecken? Aber dagegen haben sie ja die Softwareaktivierung ersonnen.
[Dieser Beitrag wurde 3 mal editiert; zum letzten Mal von hoschi am 16.03.2017 15:28]
16.03.2017 15:21:27  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Madddi

Marine NaSe
 
Zitat von theromi

 
Zitat von GandalfDerPinke

//@Omi:

Irgendwas voll? Arbeitsspeicher? Platte? Prozesse die alles klauen?

Was sagt atop?


Ne, das ist ja das komische. CPU langweilt sich, RAM ist so 2GB (von 8GB). Swap ist leer.

I/O selbst muss ich mir mal angucken. Ein anderer Punkt wäre meine Festplattenvollverschlüsselung, aber der Entropiepool ist voll genug.



Habe auch einen Root bei netcup, das Problem ebenfalls. Du könntest Mal mit "nosmp" booten, das hat bei mir geholfen. Netcup mag sich nicht dafür interessieren, meiner Meinung nach ist deren Hypervisor kaputt.
16.03.2017 17:38:11  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
theromi

AUP theromi 02.06.2020
 
Zitat von Madddi

 
Zitat von theromi

 
Zitat von GandalfDerPinke

//@Omi:

Irgendwas voll? Arbeitsspeicher? Platte? Prozesse die alles klauen?

Was sagt atop?


Ne, das ist ja das komische. CPU langweilt sich, RAM ist so 2GB (von 8GB). Swap ist leer.

I/O selbst muss ich mir mal angucken. Ein anderer Punkt wäre meine Festplattenvollverschlüsselung, aber der Entropiepool ist voll genug.



Habe auch einen Root bei netcup, das Problem ebenfalls. Du könntest Mal mit "nosmp" booten, das hat bei mir geholfen. Netcup mag sich nicht dafür interessieren, meiner Meinung nach ist deren Hypervisor kaputt.


Dann habe ich aber nur noch einen Kern, oder? peinlich/erstaunt
16.03.2017 22:40:46  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
TheRealHawk

AUP TheRealHawk 26.11.2007


traurig
17.03.2017 12:02:33  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
csde_rats

AUP csde_rats 04.09.2021
Spoiler - markieren, um zu lesen:
Was mich bei xkcd immer weider wundert: Ich habe mich früher mal durch alle Comics durchgeklickt. Mehrmals. Aber trotzdem gibt es immer wieder alte Comics, die mir komplett neu sind?! Breites Grinsen
17.03.2017 12:19:58  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
TheRealHawk

AUP TheRealHawk 26.11.2007
dito
17.03.2017 12:39:52  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
csde_rats

AUP csde_rats 04.09.2021

Ihre Wikimedia-Spendenbescheinigung war unrichtig - bitte nicht einreichen

Sie haben für Wikipedia und Freies Wissen im vergangenen Jahr gespendet oder Mitgliedsbeiträge geleistet. Durch einen Fehler unseres Versanddienstleisters hat es bei einer kleinen Gruppe von Unterstützenden, die Centbeträge mit in der Summe haben, ein Problem bei der Ausgabe dieser Summe gegeben. Dadurch haben Sie vor ein paar Tagen eine unrichtige Zuwendungsbescheinigung von uns per Post erhalten.


[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von csde_rats am 17.03.2017 14:43]
17.03.2017 14:42:52  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Traxer

Mod GSG9
als erstes mal, sorry das es etwas länger gedauert hat. kam was dazwischen.

ich zerpflück das mal kurz...

 
Zitat von [KdM]MrDeath

müssten halt noch alle flags volatile deklariert sein oder?


verwechsel das bitte nicht mit dem volatile aus java oder C#. peinlich/erstaunt
das sorgt in C/C++ "nur" dafür, dass der compiler da nichts an den markierten variablen umsortiert aka optimiert.

 
Zitat von [KdM]MrDeath

das szenario ist so, dass für jede "netjack2-client-verbindung" ein eigenes objekt instantiiert wird, das ab dann in einem eigenen thread läuft.


also fork-[join|exit] model? (nur halt mit threads, heisst da leider auch so)

 
Zitat von [KdM]MrDeath

das ist aber nicht 100%ig zuverlässig (überraschung) weswegen da hässliche dinge entstehen können.


ich tippe jetzt mal auf memory leaks in der der deluxe edition? potentiell auch noch hardware buffer leaks und co.

 
Zitat von [KdM]MrDeath

hinzu kommt natürlich dass jackaudio natürlich auf windows, mac, linux und dort natürlich noch auf allem möglichen ARM gesockse läuft...
das ist codeintern auch schön in posix und nicht posix aufgeteilt aber halt dennoch nicht so einfach "nutz die spezialinstruktion und werd glücklich)


das ist soweit nicht das problem, sofern da nicht gerade was ARMv5 mässiges auftaucht. sollte eher unwahrscheinlich sein, dass wäre dann pre-RPI 1/2 level hardware mit mehr als einem core.

wie schon gesagt die x86, POWER und ARMv7+ chips können das alle, bis auf das DCAS und das ist nur für die frühen x86_64 von AMD (Athlon 64 X2, Opteron 185) relevant gewesen. die dürften auch eher nicht mit in verwendung sein.
gelegentlich gabs da mal intel DOA boards, die da was im chipsatz vergeigt hatten und es daher nicht konnten. das wäre dann Core 2 und früher unter umständen gewesen.
du kannst da z.b. direkt alle leute ausschliessen, die Macs nutzen, die Windows >= 8.1 nutzen und vermutlich auch einen recht grossen teil der linux user, die irgendwas modernes mit multimedia kram aka spiele nutzen.
effektiv reden wir hier von hardware von vor mehr als 10 jahren!

auf den Load/Store architekturen wie POWER und ARM ist das so oder so anders und dort brauchst du diese DCAS sachen nicht, weil du dort die load-linked / store-conditional instruktionen hast, bei denen die SC instruktion abwürgt, sobald da zwischen dem LL und dem SC aufruf was mit dem speicher passierte, was nicht sollte.

 
Zitat von [KdM]MrDeath

wenn diese verbindung nun in einen fehlerfall (im realtime zweig) läuft dann muss sie der master komponente (die nur einmal pro jack instanz läuft und für alle client verbindungen zuständig ist, d.h. diese instantiiert hat und auch wieder beenden muss) "irgendwie" signalisieren dass doch jetzt bitte alle sonstigen ressourcen freigegeben werden müssen und der destruktor des "netjack-client-verbindung-objekts" aufgerufen werden soll...


also mehr oder weniger ne art GC für threads und deren resourcen?

die connection threads laufen im real-time bereich und der master nicht? das hab ich so richtig verstanden?

 
Zitat von [KdM]MrDeath

ich such jetzt also ne möglichkeit wie diese client verbindungen (einmalig, da es ja um den destruktor geht) der master komponente signalisieren können "bitte beende mich" und das möglichst blockingfrei, da realtime.


warum muss das noch non-blocking laufen, wenn die client verbindung tod ist und damit der thread nichts mehr zu tun hat?

irgendwie hab ich hier das gefühl, als wenn ich hier nen zusammenhang nicht sehe / kenne.

wenn die verbindungen jeweils mit einem worker thread gefahren werden und eine der verbindungen fertig ist, dann sollte doch vermutlich auch der thread eliminiert werden?
falls dem so ist, dann könnte man da einfach was aus der kategorie "atexit" für threads bauen, was die resourcen tilgt, kurz bevor sich der thread selbst terminiert. hier wären dann threads praktisch, die "detached" laufen, also sich selbst aus dem system entfernen, wenn sie fertig sind.

ich tippe jetzt mal drauf, dass da noch irgendwelche sachen in dem master teil verwaltet werden, auf das die client worker threads keinen zugriff haben bzw. nicht haben sollen.

 
Zitat von [KdM]MrDeath

aktuell hab ich da was hingepfuscht(!) dass die clients bei sich nen flag setzen ob der destruktor aufgerufen werden soll oder nicht und die master komponente iteriert regelmässig über alle clients drüber und schaut bei welchen das flag gesetzt ist. da wir hier von audio verbindungen reden sind das auch eher so 1-jemals maximal 128 (seien wir grosszügug und sagen 1024...) also in der richtung "noch" nicht performancekritisch.

ich hatte mir schon was überlegt ala ne queue innerhalb der masterkomponente, für die jede verbindung ein element besitzt auf das diese selbst auch nen pointer haben.
dann noch zusätzlich ein "modified" flag.

wenn jetzt verbindungen aufgebaut/abgebaut werden dann modifiziert ja nur die master komponente (im nicht realtime zweig) die queue und kann da walten und schalten wie sie will.
die client verbindungen setzen dann zuerst(!) in ihrem queue element das "destruktor-flag" und dann das "queue-modified-flag" innerhalb der master komponente.
diese überprüft regelmäsig (oder per signal, da müsste man halt auch schauen wie das dann platformübergreifend non-blocking geht) das modified flag, wenn es gesetzt ist setzt es zurück und wandert dann durch die queue und ruft für alle elemente wo das "destruktor-flag" gesetzt ist eben den destruktor auf und entfernt das element.

aufgrund der reihenfolge wie das "modified-flag" gesetzt wird sollte sich da auch keine race condition auf tun in der dann ein element verschluckt wird, oder?


die idee mit dem flag bzw. das zu registrieren und dann abzuarbeiten ist nicht so wirklich viel pfusch, wenn der rest nicht komplett umgestrickt werden soll. das ist effektiv das, was nen GC macht, nur in sehr viel komplizierter.

vorrausgesetzt ist sehe das alles richtig, dann brauchst du da keine queue.

der master erstellt die threads(?), denen kannst du parameter mit geben.

hier wäre es jetzt am einfachsten, wenn der master einfach nen stumpfes array hat, in dem er z.b. nen pointer zum destruktor hält, der array slot für jeden erstellten thread wird vom master zugewiesen und ändert sich nicht solange der thread existiert.
damit hast du nen 1:1 mapping zwischen array element und thread.

in dem array element kannst du halt ablegen was immer du willst. eine struktur mit nem func pointer zum destruktur und nen "cleanup" flag wären z.b. ne idee. das wäre effektiv das, was du da mehr oder weniger schon gedacht hast.

je nachdem ob der master jetzt ne spin loop hat oder blockt bis was passiert gibt hier jetzt zwei möglichkeiten:

spin:
bei jedem durchlauf scanst du das array nach gesetzten "cleanup" flags und rufst den destruktor auf, der dann seine sache macht. danach säuberst du das array element in dem du es auf z.b. NULL setzt. in C++ gäbs da was schöneres, was in C einfach sehr umfangreich würde.

event / blocking:
nen thread der fertig ist, setzt sein "cleanup" flag und setzt dann nen sync event (gibts auf unix nicht nativ, kann man aber recht einfach bauen*). der master wartet unter anderem auf dieses event und läuft dann weiter, wenn er das bekommt. ab hier kannst du dann effektiv das gleiche machen wie im spin teil.
(ein haken hier könnte sein, dass bei pthread nach wie vor keine möglichkeit gibt auf multiple events / conditions zu warten, wäre schön wenn es was wie Win32s WaitForMultipleObjects gäbe.)

die einzelnen array elemente können mit der zeit recycled werden. um da einen zu finden, den du nem thread zuweisen kannst scanst du einfach im master nach freien elementen und nutzt dann das erst beste. wichtig ist nur, dass die sich niemals ändern, so lange die threads aktiv sind.

das ist effektiv das gleiche wie ne handle table.

da in dem ganzen ausschliesslich der master die tabelle aka das array verwaltet und die threads lediglich mit ihren eigenen einträgen arbeiten brauchst du da effektiv gar nichts synchronisieren. keine atomics, kein gar nichts.

wichtig ist nur, dass sich in dem fall nichts an dem datenfluss ändert!

sobald irgendein anderer thread was and der tabelle ändert fliegt dir das um die ohren.

btw. die pthread TLS implementation (pthread_key*) nutzt effektiv nen array pro prozess und gibt jedem thread nen fixen slot in dem array, den dieser thread dann als seinen privaten bereich ansieht.
(siehe, erst bester treffer: https://github.com/lattera/glibc/blob/master/nptl/pthread_key_create.c)


----
* http://www.cs.wustl.edu/~schmidt/win32-cv-2.html

in C++ könnte man hier die von der handle table rausgegebenen handle in nen handle objekt wrappen, dass erlaubt dir als erstes mal, dass du da nen konkretes objekt hast mit dem du arbeitest und nicht nen integer, zweitens kannst du in der eigentlichen handle table ne referenz darauf mit ablegen, was es dir dann erlaubt die handle table zu verändern (grösser/kleiner machen, neu sortieren, etc) und dann die entsprechenden handle objekte zu aktualisieren.
damit kannst du den sachen effektiv die handle im live zustand neu zuweisen.
das ist in C ein wenig fugly bis nicht direkt machbar.
18.03.2017 9:13:17  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Traxer

Mod GSG9
noch mal auf meine constexpr sache zurück zu kommen... ich brauch da mal ein etwas grösseres sample set:

 
Code:
#include <cstdio>
#include <cstdint>

class StringLiteral
{
	const char*	m_Str;
	size_t		m_Size;
	uint32_t	m_Hash;

	static constexpr uint32_t kFnvPrime32 = 16777619UL;
	static constexpr uint32_t kFnvOffsetBasis32 = 0x811C9DC5UL;

	constexpr uint32_t Fnv1Hash32(const char* data, size_t length)
	{
		uint32_t hash = kFnvOffsetBasis32;
		for (size_t i = 0; i < length; ++i)
		{
			hash *= kFnvPrime32;
			hash ^= data[i];
		}

		return hash;
	}

public:
	template<size_t N>
	constexpr StringLiteral(const char(&str)[N])
	: m_Str(str)
	, m_Size(N - 1)
	, m_Hash(Fnv1Hash32(str, N - 1))
	{
	}

	constexpr char operator[](unsigned int index) const
	{
		return index < m_Size ? m_Str[index] : '\0';
	}

	constexpr size_t Size() const { return m_Size; }
	constexpr const char* CString() const { return m_Str; }
	constexpr uint32_t hash() const { return m_Hash; }
};

void func(const StringLiteral& s)
{
	printf("String: %s, Length: %d, Hash: 0x%08X\n", s.CString(), s.Size(), s.hash());
}

int main(int argc, char* argv[])
{
	func("hello world 132");

	return 0;
}


übersetze ich das mit MSVC (v141 [vs2017] / v140 [vs2015]) ([x86|x64] release) bekomme ich da folgenden ASM output:
 
Code:
    29: 		uint32_t hash = kFnvOffsetBasis32;
01231040  mov         eax,811C9DC5h  
    30: 		for (size_t i = 0; i < length; ++i)
01231045  xor         ecx,ecx  
01231047  nop         word ptr [eax+eax]  
    31: 		{
    32: 			hash *= kFnvPrime32;
    33: 			hash ^= data[i];
01231050  movsx       edx,byte ptr [ecx+1232120h]  
01231057  imul        eax,eax,1000193h  
0123105D  xor         edx,eax  
0123105F  movsx       eax,byte ptr [ecx+1232121h]  
01231066  imul        edx,edx,1000193h  
0123106C  xor         edx,eax  
0123106E  movsx       eax,byte ptr [ecx+1232122h]  
01231075  imul        edx,edx,1000193h  
0123107B  xor         edx,eax  
0123107D  movsx       eax,byte ptr [ecx+1232123h]  
01231084  imul        edx,edx,1000193h  
0123108A  xor         edx,eax  
0123108C  imul        eax,edx,1000193h  
01231092  movsx       edx,byte ptr [ecx+1232124h]  
01231099  add         ecx,5  
0123109C  xor         eax,edx  
0123109E  cmp         ecx,0Fh  
012310A1  jb          StringLiteral::Fnv1Hash32+10h (01231050h)  
    34: 		}
    35: 
    36: 		return hash;
    37: 	}
012310A3  ret         8  
--- XYZXYZXYZXYZXYZXYZXYZXYZXYZXYZ -----------------------------
    65: 	func("hello world 132");
012310B0  sub         esp,8  
012310B3  call        StringLiteral::Fnv1Hash32 (01231040h)  
012310B8  push        eax  
012310B9  push        0Fh  
012310BB  push        1232120h  
012310C0  push        12320F8h  
012310C5  call        printf (01231010h)  
012310CA  add         esp,10h  
    66: 
    67: 	return 0;
012310CD  xor         eax,eax  
    68: }
012310CF  ret  

das bedeutet effektiv, dass der compiler nicht in der lage ist, die constexpr zur compile-time aufzulösen. da er bei 012310B3 die hash funktion normal aufruft. kurioserweise kann er aber den rest sauber umsetzten.

mach ich das gleiche jetzt mit clang/c2 (ebenfalls vs 2017 v141), bekomme ich folgendes:
 
Code:
    65: 	func("hello world 132");
00AD1010  push        0D52DEC71h  
00AD1015  push        0Fh  
00AD1017  push        dword ptr ds:[0AD2128h]  
00AD101D  push        offset string "String: %s, Length: %d, Hash: 0x"... (0AD20F0h)  
00AD1022  call        printf (0AD1030h)  
00AD1027  add         esp,10h  
    66: 
    67: 	return 0;
00AD102A  xor         eax,eax  
00AD102C  ret  

der wert bei 00AD1010 ist der zur compile-time berechnete hash wert. der rest wurde dann auch hier sauber umgesetzt.

was ich jetzt wissen will ist, ob das auch bei anderen compilern und in anderen versionen sauber fluppt und der msc compiler mal wieder was hat.
wäre schön, wenn ihr mir da vielleicht kurz feedback geben könntet, ob das sauber zur compile-time umgesetzt wird oder nicht. (ich brauche den asm output dazu nicht peinlich/erstaunt reicht, wenn ihr das identifizieren könnt, falls nicht, schickt mir das ergebnis vielleicht besser per PM, ansonsten wird das hier sehr viel und lang)

soweit ich das aus dem standard entnehmen kann (ja, ich hab es nachgelesen), sollte das eigentlich zur compile-time umgesetzt werden und nicht zur run-time, wie es microsofts compiler da macht.

ihr müsstet euch dazu den assembler output anschauen, weil die compiler da leider keine meldung zu produzieren, ob sachen wirklich zur compile-time ablaufen oder zur run-time.
das ist auch was, was die im standard irgendwie ein wenig verhauen haben. das wäre halt schon gut zu wissen, ob das zeugs jetzt compile- oder run-time evaluiert wurde/wird.
18.03.2017 9:42:41  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
csde_rats

AUP csde_rats 04.09.2021
Our day started with the folks from 360 Security (@mj0011sec) attempting a full virtual machine escape through Microsoft Edge. In a first for the Pwn2Own competition, they absolutely succeeded by leveraging a heap overflow in Microsoft Edge, a type confusion in the Windows kernel, and an uninitialized buffer in VMware Workstation for a complete virtual machine escape. These three bugs earned them $105,000 and 27 Master of Pwn points. They won’t say exactly how long the research took them, but the code demonstration needed only 90 seconds.

http://blog.trendmicro.com/results-pwn2own-day-three/


 
ARMv5



Jemand baut Borg Binaries für ARMv4t (u.a. ARM7TDMI) und ARMv5... scheint nicht ganz so selten zu sein. Aber unwahrscheinlich, dass man da so ausversehen drüber stolpert in nem SBC oder sowas.

--

https://www.levenez.com/unix/unix.pdf

--

Sprachassistent: Google Home spielt unaufgefordert Werbung ab

*Schulterzuck* Wer sich sowas ins Haus stellt, hat eh irgendein Problem unterm Schädeldach.
[Dieser Beitrag wurde 3 mal editiert; zum letzten Mal von csde_rats am 18.03.2017 16:20]
18.03.2017 11:56:07  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
csde_rats

AUP csde_rats 04.09.2021
Hrhr. Ich habe hier gerade so eine lustige Netzwerkkamera aufm Schreibtisch, die mal neu konfiguriert werden müsste. Challenge 1: Das Ding hat keinen Reset-Knopf. Auch nicht im Gehäuse (dafür da aber stolze 3 FPGAs und nen 8051er). Challenge 2: Das Ding macht von sich aus keinen Traffic im Netzwerk. Also Port-Mirroring + Wireshark anmachen um zu schauen, für wen es sich hält, scheidet aus. Challenge 3: Der Hersteller hat eine Windows-EXE, wo man die MAC der Kamera eintippert und das Teil dann eine neue IP vergeben kann. Das geht aber nicht. Warum geht das nicht? Wireshark hält den ausgehenden Broadcast für TFTP mit einem fiktiven Opcode. Genaueres Hinsehen zeigt aber: Der fiktive Opcode sind die ersten zwei Bytes vom Herstellernamen, der Rest der Payload der Rest vom Namen, plus die aktuelle Software-Suite. Danach kommt dann eine 0x02, die sechs MAC-Bytes und dann die vier IPv4-Bytes. Auf eine Antwort scheint das Programm gar nicht zu warten - die erboste Antwort eines TFTP-Servers im Netzwerk ("Error Code, Code: Illegal TFTP Operation, Message: illegal (unrecognized) tftp operation") kommt gar nicht mehr an, da der Port bereits zu ist ("Destination unreachable (Port unreachable)").

Hm.
18.03.2017 22:19:19  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Traxer

Mod GSG9
ist der hersteller zufällig eine firma namens axis?

pack da nen eintrag in deine lokale arp table and be done with it.
oh, vergiss bitte nicht die wieder zu entfernen.
18.03.2017 22:32:38  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
csde_rats

AUP csde_rats 04.09.2021
Ne, ist ein bisschen länger, amerikanisch, mag es seine Initialen in jede Produktbezeichnung zu tun, und scheint weite Teile seiner Tools in AutoIt zu schreiben Breites Grinsen

// Ich bin inzwischen soweit, dass die Kamera sogar die IP anzunehmen scheint, aber obwohl Port 80 offen ist, mag sie nicht so recht HTTP sprechen.
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von csde_rats am 18.03.2017 22:44]
18.03.2017 22:43:27  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
csde_rats

AUP csde_rats 04.09.2021
 
In this paper, we demonstrate fine-grained software-based side-channel attacks from a malicious SGX [Software Guard Extensions] enclave targeting co-located enclaves. Our attack is the first malware running on real SGX hardware, abusing SGX protection features to conceal itself. Furthermore, we demonstrate our attack both in a native environment and across multiple Docker containers. We perform a Prime+Probe cache side-channel attack on a co-located SGX enclave running an up-to-date RSA implementation that uses a constant-time multiplication primitive. The attack works although in SGX enclaves there are no timers, no large pages, no physical addresses, and no shared memory. In a semi-synchronous attack, we extract 96% of an RSA private key from a single trace. We extract the full RSA private key in an automated attack from 11 traces within 5 minutes.



https://arxiv.org/abs/1702.08719
19.03.2017 22:50:26  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Oli

AUP Oli 21.12.2018
Kann es an einem fehlenden SPF record in den Zone Files meiner Domain liegen, dass Emails ausgehend von meinem Server von Gmail automatisch in den Spam Ordner sortiert werden?
22.03.2017 14:48:26  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
TheRealHawk

AUP TheRealHawk 26.11.2007
Wenn in deinem Namen viel Spam verschickt wird kann ein entsprechender Record vermutlich zumindest dazu beitragen, dass das aufhört und Gmail die Mails eher durchlässt.
Ich würde gleich SPF und DMARC kombinieren, wenn du das DMARC Reporting aktivierst weißt du auch wieviel Spam da reinkommt. Google unterstützt das.

/e:

 
The buffer size must not exceed the size of an atomic write to a disk file.



http://nginx.org/en/docs/http/ngx_http_log_module.html#access_log

Als da wäre?
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von TheRealHawk am 22.03.2017 17:40]
22.03.2017 14:54:56  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
hoschi

hoschi
Ich habe im X220 momentan den buendig mit dem Gehaeuse abschliessenden Akku mit vier Zellen, also den kleinsten mit 28,9 Wh. In X260 sind zwei davon eingebaut und ueblicherliche Weise verwendet man im X220 den mit sechs Zellen und 63 Wh.



Kein Powertop, mittlere Displayhelligkeit und WLAN an. Zum Glueck hat der nachfolgende Entladungszyklus gezeigt, dass der Akku in Ordnung ist. Boese CPU - so hungrig.
[Dieser Beitrag wurde 3 mal editiert; zum letzten Mal von hoschi am 22.03.2017 18:25]
22.03.2017 18:12:56  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
a1ex

a1ex_small2
<2h auf Leer kann aber auch anstrengend werden.
22.03.2017 18:42:55  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
kRush*

kRush*
SSLLabs so: weakdh, capped at B
den Shit gemacht, meckert immer noch Mata halt... Ist deren eigener Guide nicht mehr aktuell?

/e: fuckthishitgoinghome
[Dieser Beitrag wurde 2 mal editiert; zum letzten Mal von kRush* am 22.03.2017 19:45]
22.03.2017 18:45:25  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
[KdM]MrDeath

mrdeath2
 
Zitat von kRush*

SSLLabs so: weakdh, capped at B
den Shit gemacht, meckert immer noch Mata halt... Ist deren eigener Guide nicht mehr aktuell?


service neugestartet?
aktueller scan und nicht aus dem cache? Augenzwinkern
22.03.2017 19:04:15  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
kRush*

kRush*
unglaeubig gucken
kT
[Dieser Beitrag wurde 4 mal editiert; zum letzten Mal von kRush* am 22.03.2017 19:46]
22.03.2017 19:25:35  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
[KdM]MrDeath

mrdeath2
in dem alten edit stand was von lighttp - je nach maschine lohnt sich vielleicht auch einfach der umstieg auf nginx. der macht einfach nur spass zu konfigurieren <3
22.03.2017 20:27:58  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
csde_rats

AUP csde_rats 04.09.2021
nginx-Konfiguration ist so einfach, dass sogar ich das kann.
22.03.2017 20:37:32  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
kRush*

kRush*
traurig
22.03.2017 21:20:37  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
 Thema: Der Linux-Thread 100 // 0x23 ( const int MAX_POST = 30 * 100; // 0x23 )
« erste « vorherige 1 ... 22 23 24 25 [26] 27 28 29 30 ... 100 nächste » letzte »

mods.de - Forum » Linux » 

Hop to:  

Mod-Aktionen:
16.11.2017 01:42:31 teK hat diesen Thread geschlossen.
18.12.2016 23:53:56 teK hat den Thread-Titel geändert (davor: "Der Linux-Thread")

| tech | impressum