LINUX.ORG.RU
ФорумTalks

[Java][StackOverflowError] Дырка в компиляторе.

 


0

1

Доброй ночи.

На HN наткнулся на занятную шутку с Java.

interface Pong<T> {}
class Ping<T> implements Pong<Pong<? super Ping<Ping<T>>>> {
    static void Ping() {
        Pong<? super Ping<Long>> Ping = new Ping<Long>();
    }
}

При попытке его скомпилить вываливается StackOverflowError. Вот так вот.

$ javac Ping.java

The system is out of resources.
Consult the following stack trace for details.
java.lang.StackOverflowError
    at com.sun.tools.javac.code.Type$ClassType.accept(Type.java:568)
    at com.sun.tools.javac.code.Types$UnaryVisitor.visit(Types.java:3294)
    at com.sun.tools.javac.code.Types$23.visitClassType(Types.java:2618)
    at com.sun.tools.javac.code.Types$23.visitClassType(Types.java:2605)
    at com.sun.tools.javac.code.Type$ClassType.accept(Type.java:568)
    at com.sun.tools.javac.code.Types$UnaryVisitor.visit(Types.java:3294)
    at com.sun.tools.javac.code.Types$23.visitClassType(Types.java:2618)
    ...

Источник: http://news.ycombinator.com/item?id=3267663 (https://gist.github.com/1387113)

P. S.

Ах да, в коментах пишут что CL не отстает. Хотя у него макросы, ему простить можно.

★★★★★

Последнее исправление: urxvt (всего исправлений: 2)

>Дырка в компиляторе.

Тогда fork-бомба - дырка в bash, а однострочник - в perl. Разруха - она в головах.

router ★★★★★
()
Ответ на: комментарий от router

> Тогда fork-бомба - дырка в bash
Баш просто создает процессы. Дырка в ОС, позволяющая рядовому юзеру ее подвешать.

а однострочник - в perl

Фактически это обычная программа, просто плохо читаемая.

Мне кажется, в данном случае (Java) должен был бы просто проверятся лимит чего-то там.

urxvt ★★★★★
() автор топика
Ответ на: комментарий от urxvt

Баш просто создает процессы. Дырка в ОС, позволяющая рядовому юзеру ее подвешать.

Есть же limits.conf им и можно душить пользователя.

zloelamo ★★★★
()
Ответ на: комментарий от CYB3R

А безопасность и отказоустойчивость всегда негуманны.

zloelamo ★★★★
()

А можно для незнакомых с жавой краткий пересказ кода? :)

И эти люди ругают отступы в Пузоне и скобочки в Лиспах.

Pong<Pong<? super Ping<Ping<T>>>>

power
()

Ах да, в коментах пишут что CL не отстает. Хотя у него макросы, ему простить можно.

На этих примерах компилятор хотя бы не сегфолтится :)

power
()

дай дураку х..й х..й, так он и руки порежет, и хорошую вещь разобьёт

yyk ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.