| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/02/2011 14:22:29
|
Paulo Silveira
Administrador
![[Avatar]](/images/avatar/a87ff679a2f3e71d9181a67b7542122c.jpg)
Membro desde: 07/08/2002 18:38:50
Mensagens: 4204
Localização: São Paulo
Offline
|
Um simples e novo bug foi recém descoberto em todas as versões do Java. Um double d = Double.parseDouble("2.2250738585072012e-308"); (o menor double possível) entra em loop infinito, assim como no PHP.
Ou mesmo se você escrever um código java com double d = 2.2250738585072012e-308; o compilador vai utilizar o Double.parseDouble internamente, fazendo o compilador travar em loop infinito.
Isso obviamente afeta JRuby, Scala, Clojure, etc. Pode ser também um ataque a formuários web que recebem parâmetros e convertem diretamente para Double, o que sempre pareceu ser uma operação segura.
Mais informações:
http://www.exploringbinary.com/java-hangs-when-converting-2-2250738585072012e-308/
Testei na JVM do Mac e o mesmo ocorre. O código "que ofende" é esse aqui:
http://google.com/codesearch/p?hl=en#lM3pwaU8RUc/src/share/classes/sun/misc/FloatingDecimal.java&q=parseDouble&l=1476
Não há respostas da Oracle até o momento. Agradecimentos ao @rlucindo
|
http://blog.caelum.com.br twitter: @paulo_caelum
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/02/2011 14:47:51
|
zoren
GUJ Master
![[Avatar]](/images/avatar/9efbafef9f85fd9caa789941a4cdf821.jpg)
Membro desde: 30/06/2008 08:32:33
Mensagens: 1007
Offline
|
Se colar essa linha no netbeans ele trava.
Mas eu não vi esse bug com o:
e ainda dá um valor direfente.
só agora que eu vi, tem o MIN_NORMAL, mas o valor é bem próximo, mas ainda não é esse.
This message was edited 2 times. Last update was at 01/02/2011 14:54:53
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/02/2011 14:53:30
|
Sergio Lopes
Moderador
![[Avatar]](/images/avatar/8232e119d8f59aa83050a741631803a6.jpg)
Membro desde: 17/11/2003 00:22:10
Mensagens: 1368
Localização: São Paulo - SP
Offline
|
O bug é só no parseDouble. Se você usa a constante diretamente não há chamada ao parseDouble.
|
Sérgio Lopes - twitter: @sergio_caelum - blog pessoal: sergiolopes.org
Curso Java | Apostilas Java | Arquitetura Java | Curso Rails |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/02/2011 14:55:58
|
zoren
GUJ Master
![[Avatar]](/images/avatar/9efbafef9f85fd9caa789941a4cdf821.jpg)
Membro desde: 30/06/2008 08:32:33
Mensagens: 1007
Offline
|
Sergio Lopes wrote:O bug é só no parseDouble. Se você usa a constante diretamente não há chamada ao parseDouble.
Mas os valores não são os mesmos.
Só próximos.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/02/2011 15:09:39
|
Paulo Silveira
Administrador
![[Avatar]](/images/avatar/a87ff679a2f3e71d9181a67b7542122c.jpg)
Membro desde: 07/08/2002 18:38:50
Mensagens: 4204
Localização: São Paulo
Offline
|
é um antes do Double.MIN_NORMAL, algo assim.
Faça algo como System.out.printf("%.20e", Double.MIN_NORMAL);
Mas qual valor ele representa exatamente não é relevante para o bug. A fragilidade é qualquer um que converta diretamente de uma String da web para double, esta sucetivel a isso. Exemplo Double.parseDouble(req.getParameter("valor"));
This message was edited 1 time. Last update was at 01/02/2011 15:11:21
|
http://blog.caelum.com.br twitter: @paulo_caelum
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/02/2011 15:12:29
|
danilomunoz
JavaChild
Membro desde: 28/03/2006 10:02:27
Mensagens: 128
Localização: Itatiba - SP
Offline
|
O meu eclipse tbm deu deadlock, mas é só dar stop nos processos de compilação.
|
Danilo Rosetto Muñoz
SCJP 5.0
http://br.linkedin.com/in/danilomunoz
PROJETO MARVIN - http://marvinproject.org |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/02/2011 15:22:53
|
Marky.Vasconcelos
Moderador
![[Avatar]](/images/avatar/04940fadf3702cbd84b7a48161037c4f.png)
Membro desde: 11/04/2007 18:18:20
Mensagens: 5932
Localização: São Paulo/SP
Offline
|
Travou o eclipse também.
|
Facebook @MarkyHitchhiker +Mark WP: MarkyTech's
Projects:
Android Roadmap - Aprenda Android do inicio (Java é o unico pre-requisito)
Towel ( ObjectTableModel & Swing & Utils )
Tower Defense Game - Java2D [Open-Source] [How-to-play]
EVGD: Programação de jogos (links) Ponto V! - Desenvolvimento de jogos para indies, curiosos e profissionais
DefaultTableModel?! PARE! Não faça isso! Faça melhor!
Dicas: Faça perguntas inteligentes! ; MigLayout ; GridBagLayout (Joke)
Develop games is fantastic, with words you can make worlds!!!
DON'T PANIC!
MarkyHitchhiker's Blog! |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/02/2011 15:28:08
|
danilomunoz
JavaChild
Membro desde: 28/03/2006 10:02:27
Mensagens: 128
Localização: Itatiba - SP
Offline
|
Ops ... melhor não fazerem no eclipse não ...
tive que editar o código por fora (notepad) e remover a linha ... pq não conseguia mais salvar pelo eclipse ...
encheu um pouco o saco aqui ... travou bem feio ... rs.
Até mais,
|
Danilo Rosetto Muñoz
SCJP 5.0
http://br.linkedin.com/in/danilomunoz
PROJETO MARVIN - http://marvinproject.org |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/02/2011 15:43:58
|
Jose111
JavaGuru
![[Avatar]](/images/avatar/0ff1a2dc87696229db870be7c0781faa.jpg)
Membro desde: 06/04/2009 13:20:32
Mensagens: 211
Localização: Depois do System.exit(0);
Offline
|
Aqui o eclipse travou também... mas acredito que foi porque eu usei esta forma:
Entao fica preso na compilação... brincadeira legal para fazer com estagiário
|
vocedeviaestarprogramando |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/02/2011 15:56:02
|
Mauricio de Mello
Java Ninja
Membro desde: 30/01/2007 14:49:22
Mensagens: 296
Localização: Florianópolis
Offline
|
No php a coisa é mais feia entao pelo o cast ser automático?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/02/2011 15:59:35
|
Diabo Loiro
GUJ Master
Membro desde: 24/03/2009 07:46:14
Mensagens: 1040
Localização: Praia Grande - SP
Offline
|
mto louco o cara que descobriu isso... quem vai usar um double dessa forma hehe
kkkkkk
This message was edited 1 time. Last update was at 01/02/2011 16:00:11
|
Sun Certified Java Associate
Sun Certified Java Programer 6.0
Sun Certified Web Component Developer
Oracle Certified Professional, Java EE 5 Business Component Developer
Blog
http://brunodanielmarinho.wordpress.com
Fals - Osum Leader
http://osum.sun.com/group/fals
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/02/2011 16:00:54
|
Kanin Dragon
Virtual Machine Man
![[Avatar]](/images/avatar/74f303673bc7765b1bd3fea078d185b5.jpg)
Membro desde: 01/02/2011 12:46:04
Mensagens: 682
Localização: Depende
Offline
|
Ai sim fomos surpreendidos novamente.!
|
http://www.guj.com.br/java/244602-calunia-desabafo
Dragão Torpente
Shidoshi Ninjutsu
Engenharia Eletrônica - ITA
Mestrado Engenharia Eletrica - UFRJ
Futuramente Doutorado - Harvard
SCJP 5
SCWCD 5
SCJD
SCBCD
SCDJWS
SCEA
Não respondo dúvidas via MP. Não seja egoista e abra um tópico.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/02/2011 16:07:23
|
Marky.Vasconcelos
Moderador
![[Avatar]](/images/avatar/04940fadf3702cbd84b7a48161037c4f.png)
Membro desde: 11/04/2007 18:18:20
Mensagens: 5932
Localização: São Paulo/SP
Offline
|
danilomunoz wrote:Ops ... melhor não fazerem no eclipse não ...
tive que editar o código por fora (notepad) e remover a linha ... pq não conseguia mais salvar pelo eclipse ...
encheu um pouco o saco aqui ... travou bem feio ... rs.
Até mais,
Tive que fazer isso também.
Cuidado.
|
Facebook @MarkyHitchhiker +Mark WP: MarkyTech's
Projects:
Android Roadmap - Aprenda Android do inicio (Java é o unico pre-requisito)
Towel ( ObjectTableModel & Swing & Utils )
Tower Defense Game - Java2D [Open-Source] [How-to-play]
EVGD: Programação de jogos (links) Ponto V! - Desenvolvimento de jogos para indies, curiosos e profissionais
DefaultTableModel?! PARE! Não faça isso! Faça melhor!
Dicas: Faça perguntas inteligentes! ; MigLayout ; GridBagLayout (Joke)
Develop games is fantastic, with words you can make worlds!!!
DON'T PANIC!
MarkyHitchhiker's Blog! |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/02/2011 16:08:47
|
Diabo Loiro
GUJ Master
Membro desde: 24/03/2009 07:46:14
Mensagens: 1040
Localização: Praia Grande - SP
Offline
|
show de bola esse bug.
|
Sun Certified Java Associate
Sun Certified Java Programer 6.0
Sun Certified Web Component Developer
Oracle Certified Professional, Java EE 5 Business Component Developer
Blog
http://brunodanielmarinho.wordpress.com
Fals - Osum Leader
http://osum.sun.com/group/fals
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/02/2011 16:13:59
|
drigo.angelo
Virtual Machine Man
![[Avatar]](/images/avatar/15760e7b4618c67f5eb38e6e089b8b38.png)
Membro desde: 19/11/2009 12:17:08
Mensagens: 744
Localização: Uberlândia - MG
Offline
|
Então #comofaz agora? toda vez que tiver uma entrada de um valor double do usuário vou ter que validar??
|
@drigoangelo
IE6 no more
 |
|
|
 |
|
|