Minunatie de bug in VS 2008

Intrebari despre programarea cu VC++ incluzand mediul de dezvoltare, instalare, setari, debugger, compilator, linker si documentatie.
Dark
Banned
Banned
Posts: 75
Joined: 21 Nov 2007, 19:29
Judet: Bucureşti

Minunatie de bug in VS 2008

Post by Dark » 19 Jan 2009, 17:03

Cind VC 2008 converteste o solutie facuta cu o versiune anterioara, ii dezactiveaza optimizarile in Release. Mai exact, flag-ul /O2 nu este pasat compilatorului, desi in project settings scrie "Maximize Speed (/O2)" in dreptul lui "Optimization". Cei cu ochiul format vor observa ca textul nu este bold, adica este mostenit din "configuration defaults". Un indian a stricat un XML pe undeva si, incepind de la 2008, default-ul pentru "Optimization" in Release este "Disabled", drept pentru care, desi in UI scrie ceva, la compilare se intimpla altceva. Pentru a repara problema, trebuie schimbat manual pe alta setare (/O1, de exemplu), apoi schimbat inapoi pe /O2, ca sa devina bold si sa fie pasat fortat.

Exista si un bug report caruia un indian roman, pe nume Marian Luparu, i-a dat cu flit pe motiv ca a fost reparat in SP1. Evident, nu-i reparat deloc. Eu am SP1, ca si ala care a raportat bug-ul in link-ul anterior. Este fascinant cum asa ceva a putut sa treaca de QA de doua ori, mai ales ca a doua oara aparent stiau de bug.

Asa ca, daca va treziti ca mine ca aplicatia va ruleaza de nu stiu cite ori mai incet dupa ce o convertiti la 2008, si nu intelegeti de ce, mergeti in project settings si puneti /O2 de mina, desi e pus deja.



User avatar
maximghe
Membru
Membru
Posts: 139
Joined: 10 Aug 2007, 23:54

Re: Minunatie de bug in VS 2008

Post by maximghe » 19 Jan 2009, 17:14

Ce s-ar face programatorii fara buguri? :D
Se poate intimpla oricui chiar sa si treaca de doua ori de QA.
Oricum cred ca-i bine de retinut informatia.
Max

User avatar
Marius Bancila
Fondator
Fondator
Posts: 2344
Joined: 11 Jul 2007, 11:45
Judet: Timiş
Location: Timisoara
Contact:

Re: Minunatie de bug in VS 2008

Post by Marius Bancila » 19 Jan 2009, 17:33

Il stiu pe Marian, l-am intalnit anii trecuti la Redmond. Nu mi-a lasat deloc impresia de a fi "indian". Probabil ca s-a uitat pe o lista de bug-uri rezolvate in SP1 si a zis ca si asta trebuie sa fie.

Tocmai am facut un test, si nu se intampla ce ai zis tu.
1. Am creat in VS 2005 o aplication MFC dialog-based.
2. Am setat /O2 pentru configuratia de Release (apare cu bold)
3. Am inchis proiectul si deschis cu VS 2008.
4. Am mers la proprietati si pentru Release, Maximize Speed apare cu bold, iar command line apare asa:
/O2 /GL /D "WIN32" /D "_WINDOWS" /D "NDEBUG" /D "_AFXDLL" /D "_UNICODE" /D "UNICODE" /FD /EHsc /MD /Yu"stdafx.h" /Fp"Release\OptDemo.pch" /Fo"Release\\" /Fd"Release\vc90.pdb" /W3 /nologo /c /Wp64 /Zi /TP /errorReport:prompt
Dupa cum vezi /O2 e chiar la inceput.
Marius Bancila
Fondator Codexpert, Microsoft MVP VC++
Site personal | Blog

Dark
Banned
Banned
Posts: 75
Joined: 21 Nov 2007, 19:29
Judet: Bucureşti

Re: Minunatie de bug in VS 2008

Post by Dark » 19 Jan 2009, 18:33

Eu n-am facut in viata mea pasul 2. /O2 este implicit in release, n-am simtit vreodata nevoia sa-l reafirm. De altfel, cum ai facut sa-l pui explicit (sa devina bold)? Singura metoda pe care o vad este sa pun pe altceva si sa pun inapoi pe el, ceea ce nu cred ca face cineva in practica.

Despre Marian am zis ca-i "indian" deoarece vad doua posibilitati: ori e componenta lui, deci a fost implicat in "fix-ul" ala care nu repara nimic, ori nu-i componenta lui, caz in care trebuia sa lase pe altcineva sa vorbeasca, adica sa nu povesteasca din auzite, de pe cine stie ce lista de fix-uri scrisa de Sandra Brown. Stiu, bug-uri avem cu totii, dar mi se pare amuzant cind vine cite unul si neaga existenta unui bug pentru ca asa scrie pe o foaie undeva, in loc sa faca un test care ar fi durat 30 de secunde. Devine si mai amuzant daca respectivul bug a fost inclus intr-o lista de chestii rezolvate in SP1, ca atunci ma gindesc ca cineva de la QA trebuia sa confirme fix-ul, ceea ce nu s-a petrecut.

User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3778
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi
Contact:

Re: Minunatie de bug in VS 2008

Post by Ovidiu Cucu » 19 Jan 2009, 20:29

Dark wrote: Devine si mai amuzant daca respectivul bug a fost inclus intr-o lista de chestii rezolvate in SP1, ca atunci ma gindesc ca cineva de la QA trebuia sa confirme fix-ul, ceea ce nu s-a petrecut.
Dark!
Cu tot respectul pe care l-am acumulat pana acum pentru tine: am vaga impresie ca esti unul care se-nvarte prin QA cautand fixuri care nu s-au fixat. Deh... e si asta o meserie. ;).

Dark
Banned
Banned
Posts: 75
Joined: 21 Nov 2007, 19:29
Judet: Bucureşti

Re: Minunatie de bug in VS 2008

Post by Dark » 19 Jan 2009, 20:59

Hm? Nu prea e buna impresia ta, n-am nici o treaba cu QA-ul. Stiu doar ca exista si ca are un job, pe care aparent nu prea si-l face la unele firme. Nu ma mira, in birocratia care-i pe-acolo, doar ma amuza si uneori ma irita cind ma face sa pierd 2 ore sapind dupa timpeniile unui indian.

User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3778
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi
Contact:

Re: Minunatie de bug in VS 2008

Post by Ovidiu Cucu » 19 Jan 2009, 21:06

Dark wrote:doar ma amuza si uneori ma irita cind ma face sa pierd 2 ore sapind dupa timpeniile unui indian.
Numai doua ore? Daca nu era un indian ci unu de la sud de Tanganyika? Pierdeai 2 saptamani numai sa stabilesti in cati ani sa rezolvati problema.

User avatar
Marius Bancila
Fondator
Fondator
Posts: 2344
Joined: 11 Jul 2007, 11:45
Judet: Timiş
Location: Timisoara
Contact:

Re: Minunatie de bug in VS 2008

Post by Marius Bancila » 19 Jan 2009, 23:57

Dark wrote:Eu n-am facut in viata mea pasul 2. /O2 este implicit in release, n-am simtit vreodata nevoia sa-l reafirm. De altfel, cum ai facut sa-l pui explicit (sa devina bold)? Singura metoda pe care o vad este sa pun pe altceva si sa pun inapoi pe el, ceea ce nu cred ca face cineva in practica.
Da, asta am facut, l-am pus pe O1 si apoi pe O2 din nou. Asta ca sa fim siguri ca e O2.

Idea e ca eu n-am reprodus bug-ul. As fi curios de o a 3-a parere.
Marius Bancila
Fondator Codexpert, Microsoft MVP VC++
Site personal | Blog

User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3778
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi
Contact:

Re: Minunatie de bug in VS 2008

Post by Ovidiu Cucu » 20 Jan 2009, 00:56

Uite ce e, Dark.
Imi esti simpatic atata timp cat n-o faci pe programatorul_pe_post_de_end_user_care_n_viata_lui_n_a_scris_un_bug.
Am avut destui din astia pe cap, sunt satul si nu vreau sa ma mai enerveze si aici.
Asa ca iti recomand: trimite o scrisoare la Microsoft. Daca n-ai bani de timbru iti du eu.

User avatar
Marius Bancila
Fondator
Fondator
Posts: 2344
Joined: 11 Jul 2007, 11:45
Judet: Timiş
Location: Timisoara
Contact:

Re: Minunatie de bug in VS 2008

Post by Marius Bancila » 20 Jan 2009, 00:59

Dark wrote:Stai ca avem o problema de comunicare. Nimeni nu face in practica ce-ai facut tu acolo.

Cazul comun e cind ai o solutie facuta cu o versiune anterioara de VC si o convertesti. Nimeni nu se apuca sa se duca la release si sa schimbe pe /O1 si inapoi pe /O2. Toata lumea ia Release de bun, eventual mai umbla la intrinsic functions, favor fast code si alte alea. Putini pun /Ox. Deci: omu' face o aplicatie in VS 6.0, 2003 sau 2005 si lucreaza la ea fericit. Dupa care o converteste la 2008. In momentul in care o converteste la 2008, /O2 nu se traduce si aplicatia merge brusc de multe ori mai prost (5, in cazul meu, azi dimineata, dar suspectez ca era un caz fericit). Asta se intimpla cu aproape orice proiect care trece la 2008, inclusiv proiectele interne de la Microsoft. D-aia ma asteptam sa nu ajunga asa ceva la public, da' se pare ca Microsoft n-au folosit mai deloc 2008 in ograda proprie.

Sint doua modalitati absolut banale de a reproduce bug-ul, ambele prezentate in link-ul de mai sus. Prima:

1. Pornesti 2005, new solution de care vrei tu. Salvezi solutia, inchizi VS.
2. Pornesti 2008, incarci solutia facuta la pasul anterior, il lasi s-o converteasca.

In acest moment, proiectul n-are /O2 in compiler command line in release. Setarea ne minte ca e /O2 in UI, dar flag-ul lipseste. Inainte de conversie, proiectul se compila corect si mergea bine. Dupa conversie, proiectul merge prost in release si cauza nu e imediat evidenta cuiva care se loveste de problema, mai ales ca UI-ul ne minte.

Al doilea mod de a reproduce bug-ul:

1. Pornesti 2008, new solution de care vrei tu.
2. Pui proiectul in release.
3. Project settings -> C/C++ -> Optimization, pui pe "inherit from parent or project defaults".
Am inteles, testez maine.
Marius Bancila
Fondator Codexpert, Microsoft MVP VC++
Site personal | Blog

User avatar
Silviu Ardelean
Senior
Senior
Posts: 1175
Joined: 12 Jul 2007, 09:22
Judet: Timiş
Location: Timisoara
Contact:

Re: Minunatie de bug in VS 2008

Post by Silviu Ardelean » 20 Jan 2009, 01:17

Dark esti sigur ca ai Visual Studio 2008 SP1 instalat?
Fara SP1 instalat, cu o aplicatie MDI de test si eu am obtinut situatia ta. Urmeaza sa instalez SP1-ul si sa vad ce se intampla.

Dark
Banned
Banned
Posts: 75
Joined: 21 Nov 2007, 19:29
Judet: Bucureşti

Re: Minunatie de bug in VS 2008

Post by Dark » 20 Jan 2009, 01:23

Silviu Ardelean wrote: Dark esti sigur ca ai Visual Studio 2008 SP1 instalat?
Sint foarte sigur, ca doar nu ziceam ca am SP1 doar ca sa ma aflu in treaba. Si ala care a pus bug-ul pe site la Microsoft e la fel de sigur.
Ovidiu Cucu wrote:Uite ce e, Dark.
Imi esti simpatic atata timp cat n-o faci pe programatorul_pe_post_de_end_user_care_n_viata_lui_n_a_scris_un_bug.
Am avut destui din astia pe cap, sunt satul si nu vreau sa ma mai enerveze si aici.
Asa ca iti recomand: trimite o scrisoare la Microsoft. Daca n-ai bani de timbru iti du eu.
Uite ce e, Ovidiu. Am trimis o "scrisoare" la Microsoft prin intermediul link-ului de mai sus, unde poti sa infirmi/confirmi bug-ul. Au trimis si altii. Nu despre asta era vorba aici. Menirea thread-ului era diseminarea informatiei. De bug-ul asta se vor mai lovi si altii si m-am gindit ca, postind aici, exista o sansa sa scutesc pe cineva de durerea redescoperirii.

Comentariile la adresa priceperii indienilor micromoi si a lui Marian ala care a negat bug-ul sint secundare. Indiferent prin ce experiente ai trecut tu, eu ramin la parerea ca s-a produs incompetenta (nu ca ar fi prima data, sa ne amintim cind au stricat template-urile in 2005 SP1 pentru ca cineva n-a dat commit la timp), dar nu am postat ca sa spun ca Microsoft suge, mai ales ca Visual Studio este produsul lor pe care-l respect cel mai mult. L-am amintit pe Marian pentru ca cititorul neatent ar putea da peste comentariul sau si ar putea crede ca bug-ul e rezolvat in 2008 SP1, ceea ce nu e. Am continuat subintriga pe tema lui doar pentru ca Marius i-a luat oarecum apararea. De asemenea, post-ul anterior in care am povestit asa de stufos despre importanta bug-ului nu are ca scop sa ma dau eu rotund sau sa fac misto de Microsoft, ci sa se poata pricepe ca nu-i doar o cautare a nodului in papura, ci e ceva care afecteaza pe multi, deci e bine de stiut.

Daca ti se pare ca fac pe programatorul far'de'bug, e problema ta. Fiind mare taraboste pe-aci, ai doua optiuni: stergi sau inchizi thread-ul (sau contul meu), pe principiul ca ce nu te intereseaza sau nu intelegi sigur nu e relevant pentru nimeni altcineva, sau ignori ce-am scris, ca sa nu te mai enervezi. Ar mai fi si varianta sa iei ce-am scris drept ce-am scris, fara teorii despre programatori fara pata, dar nu vreau sa fortez mina nimanui cu atitea alegeri.

neagu_laurentiu
Membru++
Membru++
Posts: 919
Joined: 23 Jul 2007, 11:32

Re: Minunatie de bug in VS 2008

Post by neagu_laurentiu » 20 Jan 2009, 07:55

La mine bug-ul se manifesta. Am trecut un proiect din VC++ 2005 SP1 Professional catre 2008 SP Team si intradevar in UI arata default ca e setat pe O2 dar flag-ul /O2 lipseste cu desavarsire in "linia de comanda"...

User avatar
Marius Bancila
Fondator
Fondator
Posts: 2344
Joined: 11 Jul 2007, 11:45
Judet: Timiş
Location: Timisoara
Contact:

Re: Minunatie de bug in VS 2008

Post by Marius Bancila » 20 Jan 2009, 09:46

Sint doua modalitati absolut banale de a reproduce bug-ul, ambele prezentate in link-ul de mai sus. Prima:

1. Pornesti 2005, new solution de care vrei tu. Salvezi solutia, inchizi VS.
2. Pornesti 2008, incarci solutia facuta la pasul anterior, il lasi s-o converteasca.
Confirm. Nu apare /O2 in linia de comanda.
Marius Bancila
Fondator Codexpert, Microsoft MVP VC++
Site personal | Blog

User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3778
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi
Contact:

Re: Minunatie de bug in VS 2008

Post by Ovidiu Cucu » 20 Jan 2009, 10:27

OK. e un bug. Foarte bine ca am aflat de el si stim si ce avem de facut.

[ off-topic ]
"Marele taraboste de aici" recomanda inca o data cu caldura lectura Inainte de a posta, in special Regula nr. 0.

Post Reply