[Issue 18026] Stack overflow in ddmd/dtemplate.d:6241, TemplateInstance::needsCodegen()

d-bugmail at puremagic.com d-bugmail at puremagic.com
Sat Jun 9 21:30:17 UTC 2018


https://issues.dlang.org/show_bug.cgi?id=18026

ag0aep6g <ag0aep6g at gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |ice
                 CC|                            |ag0aep6g at gmail.com

--- Comment #10 from ag0aep6g <ag0aep6g at gmail.com> ---
(In reply to JR from comment #9)
> > git clone https://github.com/zorael/kameloso -b 2080-overflow1

Reduced further to a single file (but still with Phobos dependencies):

----
enum Type
{
    x000,x001,x002,x003,x004,x005,x006,x007,x008,x009,
    x010,x011,x012,x013,x014,x015,x016,x017,x018,x019,
    x020,x021,x022,x023,x024,x025,x026,x027,x028,x029,
    x030,x031,x032,x033,x034,x035,x036,x037,x038,x039,
    x040,x041,x042,x043,x044,x045,x046,x047,x048,x049,
    x050,x051,x052,x053,x054,x055,x056,x057,x058,x059,
    x060,x061,x062,x063,x064,x065,x066,x067,x068,x069,
    x070,x071,x072,x073,x074,x075,x076,x077,x078,x079,
    x080,x081,x082,x083,x084,x085,x086,x087,x088,x089,
    x090,x091,x092,x093,x094,x095,x096,x097,x098,x099,
    x100,x101,x102,x103,x104,x105,x106,x107,x108,x109,
    x110,x111,x112,x113,x114,x115,x116,x117,x118,x119,
    x120,x121,x122,x123,x124,x125,x126,x127,x128,x129,
    x130,x131,x132,x133,x134,x135,x136,x137,x138,x139,
    x140,x141,x142,x143,x144,x145,x146,x147,x148,x149,
    x150,x151,x152,x153,x154,x155,x156,x157,x158,x159,
    x160,x161,x162,x163,x164,x165,x166,x167,x168,x169,
    x170,x171,x172,x173,x174,x175,x176,x177,x178,x179,
    x180,x181,x182,x183,x184,x185,x186,x187,x188,x189,
    x190,x191,x192,x193,x194,x195,x196,x197,x198,x199,
    x200,x201,x202,x203,x204,x205,x206,x207,x208,x209,
    x210,x211,x212,x213,x214,x215,x216,x217,x218,x219,
    x220,x221,x222,x223,x224,x225,x226,x227,x228,x229,
    x230,x231,x232,x233,x234,x235,x236,x237,x238,x239,
    x240,x241,x242,x243,x244,x245,x246,x247,x248,x249,
    x250,x251,x252,x253,x254,x255,x256,x257,x258,x259,
    x260,x261,x262,x263,x264,x265,x266,x267,x268,x269,
    x270,x271,x272,x273,x274,x275,x276,x277,x278,x279,
    x280,x281,x282,x283,x284,x285,x286,x287,x288,x289,
    x290,x291,x292,x293,x294,x295,x296,x297,x298,x299,
    x300,x301,x302,x303,x304,x305,x306,x307,x308,x309,
    x310,x311,x312,x313,x314,x315,x316,x317,x318,x319,
    x320,x321,x322,x323,x324,x325,x326,x327,x328,x329,
    x330,x331,x332,x333,x334,x335,x336,x337,x338,x339,
    x340,x341,x342,x343,x344,x345,x346,x347,x348,x349,
    x350,x351,x352,x353,x354,x355,x356,x357,x358,x359,
    x360,x361,x362,x363,x364,x365,x366,x367,x368,x369,
    x370,x371,x372,x373,x374,x375,x376,x377,x378,x379,
    x380,x381,x382,x383,x384,x385,x386,x387,x388,x389,
    x390,x391,x392,x393,x394,x395,x396,x397,x398,x399,
    x400,x401,x402,x403,x404,x405,x406,x407,x408,x409,
    x410,x411,x412,x413,x414,x415,x416,x417,x418,x419,
    x420,x421,x422,x423,x424,x425,x426,x427,x428,x429,
    x430,x431,x432,x433,x434,x435,x436,x437,x438,x439,
    x440,x441,x442,x443,x444,x445,x446,x447,x448,x449,
    x450,x451,x452,x453,x454,x455,x456,x457,x458,x459,
    x460,x461,x462,x463,x464,x465,x466,x467,x468,x469,
    x470,x471,x472,x473,x474,x475,x476,x477,x478,x479,
    x480,x481,x482,x483,x484,x485,x486,x487,x488,x489,
    x490,x491,x492,x493,x494,x495,x496,x497,x498,x499,
    x500,x501,x502,x503,x504,x505,x506,x507,x508,x509,
    x510,x511,x512,x513,x514,x515,x516,x517,x518,x519,
    x520,x521,x522,x523,x524,x525,x526,x527,x528,x529,
    x530,x531,x532,x533,x534,x535,x536,x537,x538,x539,
    x540,x541,x542,x543,x544,x545,x546,x547,x548,x549,
    x550,x551,
}

import std.concurrency: send;
import std.format: format;

struct PeekPlugins {}

struct IRCEvent
{
    Type type;
    byte sender;
    string channel;
    string content;
    string aux;
    uint num;
    long time;
}

@Type
void onSetCommand()
{
    alias s = send!(PeekPlugins, shared IRCPlugin, IRCEvent);
}

interface IRCPlugin {}
class AdminPlugin : IRCPlugin {}

class WHOISRequestImpl
{
    void foo()
    {
        IRCEvent event;
        "[%s] @ %s".format(event);
    }
}
----

Fails a bit less reliably, but still 7 out of 10 times.

--


More information about the Digitalmars-d-bugs mailing list