Microsoft VS 2015 C++: telemetria minden lefordított binárisba

Röviden, tömören: a Microsoft Visual Studio 2015 C++ fordítója minden, általa fordított binárisba telemetriát helyez.

Most hogy ez kiderült, a cég elismerte, hogy ez igaz és ők teszik bele a programkódba a telemetry_main_invoke_trigger() és a telemetry_main_return_trigger() függvényeket.

A kódhívás a naplózó ETW-vel kommunikál, amit telemetria szolgáltatások is használnak. A Microsoft bizonygatja, hogy számukra csak akkor értelmezhető a kiváltott ETW eseményadat, ha szimbóluminformációk (pl. PDB-k) is mellékelve vannak.

Azt ígérik, hogy kiszedik a következő frissítésben. Addig is, a "notelemetry.obj" linkelése a megoldás.

Hozzászólások

Modositani a default likelodo objektumot ? Igen.
Mindig van egy. Nem main() az elso fuggveny (belepesi pont) egy C/C++ kodban.

Nem tudom mivel tudd tobbet az OS vagy MS ettol,
ha jol tevedek a process inditasok eddig is monitorozhatoak voltak.

Ez inkabb egy WTF -nek tunik, amirol elhiszem, hogy veletlenul volt hulye valaki,
mert hogy tenlyegesen mire jo ilyen formaban az keredeses.

Amit nem lehet megirni assemblyben, azt nem lehet megirni.

Jajjajjajjjj!!! TELEEMETRIAAAAA!!!!!

Komolyra fordítva: valaki utánanézett már, hogy egyébként mit csinál, vagy mindenki leállt a telemetria szónál hisztizni? (Komolyan kérdem, mert ha semmi eget verőt, akkor nem fáradok vele.)

----------------
Lvl86 Troll, "hobbifejlesztő" - Think Wishfully™

Nem voltak túl beszédesek, ezt írták:

Our desire was to build a framework that will help investigate performance problems and improve the quality of our optimizer should we get any reports of slowdowns or endemic perf problems in the field.
[...] What the code does is trigger an ETW event which, when it’s turned on, will emit timestamps and module loads events.

A csávó nem említi, hogy a kigyűjtött információkat alapesetben hazaküldik-e, de sokat mondóan mentegetőzik azzal, hogy számukra csak akkor értelmezhető az adat, ha PDB-ket is mellékelsz, majd a végén linkel egy KB cikket, hol tudod állítgatni a Windows 10 hazatelefonálós beállításait (ezzel a szóhasználattal).

Nem az a gond, hogy bekerült két új függvény a binárisba, hanem hogy mindezt
- jó MS módra rögtön opt-out típusban;
- a közvélemény tájékoztatása nélkül;
- ráadásul úgy, hogy valószínű, a megfelelő feltételek fennállása esetén, rögtön hazaküldi az eredményeket a program;
- ahol az „eredményeknek” csak a VS készítőinek fantáziája szab határt (most éppen időbélyeg és modulbetöltési események).

--
The Elder Scrolls V: Skyrim

Ertem, tehat a fo problema az, hogy epp nincs senkinek jobb dolga.

Elso ket pontra reagalnek: userek 99%-a nem, hogy nem tudja mi ez, de egyebkent kurvara le is szarja, mert ot egy dolog erdekli: mukodjon a gepe lehetoleg gyorsan.

Na most ehhez az is kell, hogy tudd, hogy mit csinalnak az userek es milyen hibakba futnak bele. Gondolom ismered a klasszikus "de nekem mukodik" ervelest.

----------------
Lvl86 Troll, "hobbifejlesztő" - Think Wishfully™

Ugy gondolom hogy a VS2015 juzerei eltudjak donteni, akarnak-e telemetriai adatot kuldeni az MS-nek vagy sem. Nem igazan egy szinten vannak az atlag juzerrel. Ha az atlagjuzerrol beszeltel akkor alma kortevel valo osszehasonlitas esete.

A VS2015-el keszult szoftver tulajdonosai valszeg nem az MS szekeret akarjak tolni hanem a sajatjuket es _max_ NEKIK kell hogy kuldjenek barmifele telemetriai adatot a produktal kapcsolatban.

Szerk: masreszt egy termek eseten pl win10 teljesen felesleges a folyamatos telemetria. Boven eleg csak problema eseten kuldeni informaciot a gyartonak. Pl crash eseten a kovetlezo bootkor megkerdezzuk a felhasznalot h akarja e h kivizsgaljak a problemat. Vagy sikertelen update telepites eseten.

És az msvcrt-t ki fogja stoppolni, optimalizálni? Érdemes megnézni pl. A .NET 1.1 és 2.0 között a string.űveletek teljesítményét: jött a visszajelzés, hogy ez a problémás, javítottak rajta. Gondolom a telemtriával ugyanez a célja. (Ha meg csak pdb-vel működik, akkor gondolom csak a devek,esetén gyűjtenek a még fejlesztés/tesztelés alatt álló szoftverről, így meg ismét nem értem a picsogás tárgyát.

----------------
Lvl86 Troll, "hobbifejlesztő" - Think Wishfully™

Ez nem hit kérdése, szimplán a rendelkezésre álló információim alapján végiggondoltam, hogy mit és miért akarhatnak monitorozni.

Az a gond, hogy a hup 99%-a még erre sem képes, hanem elkezd hisztizni, ha meglátja a telemetria szót. (Vajon miért nem cibálja ide soha senki egy-egy ilyen telemetriás bejegyzésnél, hogy _konkrétan_ mit is monitoroz egy-egy ilyen szolgáltatás?)

----------------
Lvl86 Troll, "hobbifejlesztő" - Think Wishfully™

Egyszer megnézném, hogyan dolgoznál egy olyan környezetben, ahol:
- a ketyeréhez a JTAG-debugger hét számjegyű összegbe kerül (jó, a szoftverével együtt)
- ezért a céged vesz összesen kettőt
- épp mindkettő használatban van
- átkötni tíz perc
- (innentől már elvben lehetne javítani a helyzeten)
- az eszközhöz remote kapcsolódsz, mert kint van egy külföldi telephelyen, VPN-en és még egy ssh-tunnelen keresztül (de lehet akár kint egy vasúti sín mellett, mert pl. egy jelzőberendezés hibásodik meg)
- a debugger szoftverben ennek hatására egy léptetés is 10 másodperc
- és maga a szoftver egy motif felületet használó trotty.

Ja kérem, nem mindenki Java/web/php Pistike.
És akkor még nem írtam, hogy adott esetben egy időzítésigényes, masszívan többszálú, hardverhez is nyúló (hardver is időzítésérzékeny) szoftver esetén mit csinálhatsz a debuggereddel.
Vagy ha magad fejleszted a hardvert (FPGA-terv), és nincs elég időd szimulációra, elég helyed ChipScope-ra.

Dióhéjban: azzal "vádollak", hogy lehetsz kiváló webfejlesztő/backend fejlesztő, de a szoftverfejlesztés egy másik, igen jelentős részéről nem sok gyakorlati tapasztalatod van.

Pár ötlet:

  • úgy írod meg a kódod, hogy annak nagy része nem csak a célhardveren fut, tehát lehet debugolni akár egy PC-n
  • emulátorban futtatod a kódod
  • legyen tesztkörnyezet, ne az éles környezetben keresd a hibát (logok segítenek a hiba reprodukálásában)
  • amit nehéz debuggolni azt inkább jobb elkerülni (időzítési hibák)

Az ötletek jól hangoznak, nyilván ezzel kezdi az ember, amikor ilyen van, de főleg hardverközeli rendszereknél ez nem járható...
- Nem csak a célhardveren fut? Na, ez igen hasznos, ha nem arról lenne szó, hogy pl. egy 3rd party firmwarebe fejlesztesz bele. (Pl. egy Nordic BLE-s cuccot csinálsz, ahol van egy soft device blob, amit még mockolni se tudsz értelmesen)
- Emulátor? A megírása általában nagyobb szívás, mint másképp debuggolni. Vegyünk mondjuk egy FPGA-ba ágyazott softcore processzort, sok érdekes perifériával. Tipikusan olyan rendszerekkel szoktam dolgozni, amihez nincsen kézreálló emulátor (még QEMU-ba se lehet könnyen belehergelni)
- Legyen tesztkörnyezet - van mondjuk egy, azaz egy darab boardod (vagy mondjuk kettő), mert ez egy frissen tervezett termék, még nem tömeggyártott.
- Amit nehéz debuggolni, azt inkább jobb elkerülni: ezt hogy érted? Ne fejlesszük le azt a részét az ügyfélnek?

Szóval elvben jól hangoznak, gyakorlatban sokszor nem működik. Nem véletlenül írtam, amit írtam. Ezt sokan egyszerűen nem értik, mert más munkakörben voltak/vannak.

Csak egyszer ne trollkodna valaki bele a beágyazott bigyulákkal egy számítógépes topicba, ha előkerül a debugger. Nyilvánvalóan felrakod a pdb fájlt is a mikrocontrollerre, nyílván!

Nem tudom feltűnt-e, de nem olyan környezetről beszélünk, ahol
- nem lenne elérhető ingyen a debugger
- korlátozva lenne annak használhatósága
- esetek 99,99%-ában lenne bármiféle érdemi vonzata a teljesítményt érintve
- ne lehetne akár remote is kapcsolódni
- maga a szoftver nem egy özönvíz előttről ránkrohadt valami.

A legtöbb esetben, amikor valaki kijelenti, hogy ő márpedig nem használ debuggert nem az általad felsorolt esetek vannak, hanem szimplán ennyit ismer/tud/akar használni az illető.

----------------
Lvl86 Troll, "hobbifejlesztő" - Think Wishfully™

Ééés miután a sokadik alkalom, hogy célhardverekkel kezdesz dobálózni ott, ahol általános célú hardveren általános célú szoftver működésének vizsgálatáról van szó, nem tudom másnak nyilvánítani a hozzászólásod, mint nettó trollkodás.

Bocs, ha zavarja a lelkivilágod.

----------------
Lvl86 Troll, "hobbifejlesztő" - Think Wishfully™

Mert az nem komolytalan, amikor telesírja mindenki a világot, hogy Jajajjajj, megfigyel a Microsoft/NSA/CIA/MI5/KGB/Moszad/Gestapo/TEK/szomszéd marisnéni, aztán valahogy sosem kerül ki olyan sztori az internetre, hogy akkor a $lista ezeket gyűjti rólad, mert itt ez és ez és ez van a kódban.

----------------
Lvl86 Troll, "hobbifejlesztő" - Think Wishfully™

Ki mondott ilyet? Annyit mondtak, hogy megjelent egy dokumentálatlan telemetria kód.

Mi ebben a fura? Ha a fejlesztő számára gyűjt információt, akkor miért nincs dokumentálva? Ha a Microsoftnak, akkor meg miért nem lehet kikapcsolni, ha nem akarom, hogy a saját termékemről információt gyűjtsőn?

Nagyon könnyen meg lehetne amúgy az egészet kerülni: legyenek szívesek publikussá tenni, hogy mit gyűjtenek (pl. kódolás előtti csomagformátum, amit esetleg az ember a saját gépén meg tud nézni). Ha ez megvan, senki nem fog gyanakodni. Nekik ez semmibe nem kerülne (nem üzleti titok), viszont a gyanakodást elvágja. Mégsem teszik, ezek a kódok dokumentálatlanul beszivárognak. Nem fura?

De amíg az egész csak úgy titokban belekerül, addig jogosnak érzem a felháborodást. Ne játszd az értetlent/naivat, ha kérhetem.

"Ha a Microsoftnak, akkor meg miért nem lehet kikapcsolni, ha nem akarom, hogy a saját termékemről információt gyűjtsőn?"

Legalább a linkelt cikket olvasd el:

"In the meantime, users who have a copy of VS2015 Update 2 and wish to turn off the telemetry functionality currently being compiled into their code should add “notelemetry.obj” to their linker command line."

Illetve a linkelt reddit kommentben is: https://technet.microsoft.com/en-us/itpro/windows/manage/manage-connect…

"Ha ez megvan, senki nem fog gyanakodni."

Igen, ennek rengeteg példáját láttuk a hupon, hogy senki nem fog semmire sem "gyanakodni", amikor a Microsoft dokumentációt, fájlformátum-specifikációt vagy kódot publikál. Ezért mondom azt, hogy mindenki nézzen utána önmaga, ha nem hisz másnak.

"De amíg az egész csak úgy titokban belekerül, addig jogosnak érzem a felháborodást. Ne játszd az értetlent/naivat, ha kérhetem."

Értem én, hogy mi a bajod, attól még műhiszti.

----------------
Lvl86 Troll, "hobbifejlesztő" - Think Wishfully™

> "In the meantime, users who have a copy of VS2015 Update 2 and wish to turn off the telemetry functionality currently being compiled into their code should add “notelemetry.obj” to their linker command line."

Igen, ez hogyan is jött ki? Microsoft dokumentálta előbb, vagy valaki más jött rá?

> Értem én, hogy mi a bajod, attól még műhiszti.

Akkor nem érted.

Szerk: írok egy zseblámpa alkalmazást Androidra. Feltelepítéskor kér jogot hálózat elérésére. Mit szólsz hozzá?

Tegyük fel, hogy felfigyelsz erre és megkérdezed a fejlesztőt. Erre ő azt válaszolja, hogy egy online szolgáltatástól töltjük le a Nap aktuális állását, hogy ez alapján a fényerőt optimálisra kalibráljuk. Az adatforgalom formátumát nem adjuk ki, lokálisan nem tudod ellenőrizni, hogy mi megy ki, mi jön be.

Ha ezek után nyugodtan használnád, akkor szerintem naiv vagy.

"Igen, ez hogyan is jött ki? Microsoft dokumentálta előbb, vagy valaki más jött rá?"

Mittudomén. Viszont a redditen az MS-es ürge megerősítette ezt.

"Akkor nem érted."

Te nem akarod megérteni, hogy bizonyos szint felett nem tudsz mást csinálni, mint a telemetrika. Nem tudsz odaállni minden egyes user mögé, hogy akkor adjon részletes leírást, hogy milyen környezetben jött elő egy hiba vagy lassulás, mintsem, hogy mérsz, azok adatait aggregálod és kielemzed a kirívó eseteket.

"Tegyük fel, hogy felfigyelsz erre és megkérdezed a fejlesztőt."

Ha annyira érdekel, hogy mit tesz egy szoftver, akkor belenézek. Létezik IDA, létezik JAD, .NET Reflector, stb. Mert az egy dolog, hogy mit állít a fejlesztő és az egy dolog, hogy mit csinál a szoftver valójában.

----------------
Lvl86 Troll, "hobbifejlesztő" - Think Wishfully™

Amúgy az IDA használata nem sért licenszt? Te erre akarsz rávenni?

Nagyanyámat (=egységsugarú felhasználó) tanítsam meg az IDA használatára, az assembly kód megértésére (mert ugye Hexrays Decompilert megvetetni nem fogom, ellopására meg nem bujtatsz fel, ugye?).

Azt nem érted meg, hogy a telemetria egy szó. Ha én rámondom valamire, hogy telemetriai adatokat gyűjtök, akkor te elhiszed? Felőlem elhiheted, de akkor légy oly jó, hogy nem lepődsz meg, hogy kinevetlek, ha egyszer egy topicban a Google privacyén aggályoskodsz.

Azért demagógiába se érdemes csúszni. Egyrészt nyilván nem csak IDA létezik a világon, másrészt nem kell minden egyes felhasználónak megtanulnia a debuggerek és a disassemblerek használatát ahhoz, hogy kiderítsék vajon milyen adatok hagyják el a számítógépét. Pl. megbízhatnak egy erre szakosodott biztonsági céget is, amelyik kideríti helyettük/számukra.

Egyébként itt van egy összefoglaló arról, hogy milyen kapcsolatokat nyithatnak a Windowsok a Microsoft szerverei felé és azokat hogyan és hány helyen lehet szabályozni:

https://technet.microsoft.com/en-us/itpro/windows/manage/manage-connect…

Nyilván group policy segítségével már a kezdetektől fogva átállítható az is, hogy ne a Microsofthoz menjenek az error report információk. Én 15 éve is úgy üzemeltettem Windows hálózatot, hogy az összes ilyen jellegű adat (milyen program crashelt és mikor) a saját szervereinkre érkezett meg, valamint a Windows Update frissítések is központilag voltak szabályozva, nem az MS szervereihez kapcsolódtak a Windows munkaállomások. A Microsoft erre mindig nagy hangsúlyt fektetett, különben komolyabb nagyvállalatok nem is építenének a termékeikre.

Ennek ellenére érthető, hogy az átlag otthoni felhasználókat ez nem nyugtatja meg és valóban aggasztó ez a fajta agresszív üzletpolitika, amellyel a Microsoft jelenleg működik. Az érem másik oldalába belegondolva azonban valamennyire érthető a helyzetük. A sok kikapcsolt frissítéssel és megbuherált beállításokkal működő több millió fertőzőtt Windows XP zombigép a világban rengeteg problémát okozott mindenkinek, nem csak az MS-nek. DDoS támadásoktól a spamküldésig mindenfélére használt botnetek jobbára olyan Windows rendszerekből épültek fel, amelyeken az összes kifogásolt funkció ki volt kapcsolva, így pontos képet se lehetett kapni azok működéséről és Windows Update hiányában még a Microsoft által kirakott Malicious Software Removal eszközök sem futottak le ezeken a gépeken, így hónapokon keresztül működhettek aktívan. Nyilván az elejét akarják venni annak, hogy ez mégegyszer ilyen nagy számban megtörténhessen...

Aha. Vagy nem.

Szerk: amit ennyiszer hallottunk, az az, hogy
- a telemetria kell
- a hupperek hülyék, mert nem fogják fel, hogy igazad van
(A két pont néha fordítva is szerepelhet)
Ami ki szokott maradni, az minden más. Az érveket, hogy az MS megvalósítása, kommunikációja miért aggályos, azt lazán ignorálod vagy bagatelizálod. Ezzel nem tudok mit kezdeni. Hacsak annyit, hogy kicserélem minden hozzászólásban a Microsoftot Google-ra, és akkor talán már negatívabb irányba leszel elfogult.

Ezer+1x leírtam azt is, hogy miért kell, ezt valahogy te ignorálod.

Egyébként édes mindegy, hogy mit kommunikál a Microsoft (vagy akár a Google), ameddig az itt lévők hitből reagálnak Mindenre. (Nagyon szép példa erre a Windowsos Linux kompatibilitási réteg, amikor elkezdenek egyesek egyből falovazni, mintsem hogy jé, Microsoft efelé is nyit.

Másrészt nem tudom feltűnt-e, de ütöttem már eleget geleiéket is pl. a 3rd partykhoz való görcsös ragaszkodás miatt (Mindezt abban a korszakban, mikor mindenki maga akar szolgáltatni). Vagy akár a WinUpdate korábbi szerencsétlenkedés miatt vagy, hogy hagynak elsorvadni ilyeneket, mint a Debugger Cancas, amit sok egyéb mellett végképp meg lehetne nyitni, hogy legalább az userek megpróbálják portolni az újabb VS-ekhez.

Persze, a hupon ezt is sikerült már megideologizálni, hogy valójában elterelésképp írom, mert az MS fizetett embere vagyok, hahaha. (Bár, ha már itt tartunk, kellőképpen elég,volt a mostani munkahelyemen...)

----------------
Lvl86 Troll, "hobbifejlesztő" - Think Wishfully™

Nézz meg egy Ubuntu-topicban.

De az is érdekes, hogy fáj n+1-szer leírni, amit fent jeleztél (most nem keresem meg), provokatív féligazságokat (szál nyitó hozzászólás) meg nem.

Mert nem, még mindég nem a telemetriai adatok gyűjtésével van a baj. Ennek dokumentálatlanságával, elrejtésével, körülményes kikapcsolásával. Hogy-hogynem, efölött mindég szemet hunysz. Ez a bajom.

remélem nagyorgy megdobálja Ballmert ezért :)