On Tuesday, 12 September 2017 at 21:01:26 UTC, Moritz Maxeiner wrote:
On Tuesday, 12 September 2017 at 19:44:19 UTC, vino wrote:
Hi All,

I have a small piece of code which executes perfectly 8 out of 10 times, very rarely it throws an assertion error, so is there a way to find which line of code is causing this error.

You should be getting the line number as part of the crash, like here:

--- test.d ---
void main(string[] args)
{
        assert(args.length > 1);
}
--------------

-----------------
$ dmd -run test.d

core.exception.AssertError@test.d(3): Assertion failure
[Stack trace]
-----------------

If you don't what are the steps to reproduce?

Hi Max,

I tried to run the code for at least 80+ time the code ran without any issue, will let you know in case if I hit the same issue in feature, Below is the piece of code, plese do let me know if you find any issue with the below code.

Program Code:
import core.stdc.stdlib: exit;
import std.algorithm: all, among, filter, map, setDifference, sort, uniq, each, joiner;
import std.array: appender, join;
import std.container.array;
import std.conv: to;
import std.datetime.systime: Clock, days, SysTime;
import std.file: SpanMode, dirEntries, exists, isFile, mkdir, remove, rmdirRecurse;
import std.getopt;
import std.parallelism: parallel, task, taskPool;
import std.path: absolutePath, baseName, dirName, isValidFilename, isValidPath, globMatch;
import std.range: empty, zip,  chain, chunks;
import std.stdio: File, writefln, writeln;
import std.string: chomp, chop, isNumeric, split, strip;
import std.typecons: tuple, Tuple;
import std.uni: isAlpha, toLower, isWhite;
import std.conv;

auto coSizeDirList (string FFs, int SizeDir) {
        int subdirTotal;
        int subdirTotalGB;
        Array!string Subdir;
        Array!string Subsize;
        Array!string Result;
auto dFiles = Array!string ((dirEntries(FFs, SpanMode.shallow).filter!(a => a.isDir))[].map!(a => a.name));
    foreach (d; dFiles[]) {
auto SdFiles = Array!ulong(dirEntries(d, SpanMode.depth).map!(a => a.size));
                                foreach(f; SdFiles[]) { subdirTotal += f; }
                                subdirTotalGB = (subdirTotal/1024/1024);
if (subdirTotalGB > SizeDir) { Result ~= d; Result ~= to!string(subdirTotalGB); }
                                subdirTotal = 0;
                    }
                        return Result;
}

void ptSizeDirList (Array!string SizeDirlst, int SizeDir) {
 alias DirSizeList = typeof(coSizeDirList(string.init, int.init));
 auto MSresult = taskPool.workerLocalStorage!DirSizeList();
 foreach (string Fs; parallel(SizeDirlst[0 .. $], 1)) {
                        auto FFs = Fs.strip;
                        auto MSizeDirList = task(&coSizeDirList, FFs, SizeDir);
                        MSizeDirList.executeInNewThread();
                        auto MSizeDirListData = MSizeDirList.workForce;
                        MSresult.get ~= MSizeDirListData;
                        }
                foreach(i; MSresult.toRange)
chain(i[]).chunks(2).each!(e => writefln!"%-60s %s"(e[0], e[1]));
                
}

void main () {
auto SizeDirlst = Array!string( "C:\\Temp\\TEST2\\BACKUP", "C:\\Temp\\TEST2\\EXPORT", "C:\\Temp\\TEST2\\PROD_TEAM", "C:\\Temp\\TEST2\\TEAM", "C:\\Temp\\TEST3\\BACKUP", "C:\\Temp\\TEST3\\EXPORT" );
int SizeDir = 10;
ptSizeDirList(SizeDirlst, SizeDir);
}

From,
Vino.B

Reply via email to